Implement the dialog for creating a resource allocation as a two-step
Primer dialog driven by Turbo streams:
1. Kind step: choose between an explicit principal and a
filter-criteria placeholder.
2. Allocation step: the per-kind form (principal/work package, date
range, hours, filter name) swapped in without navigation.
Backend changes:
- Controller `new`/`step`/`create` actions render and update the
dialog via Turbo streams; entity and principal are resolved against
the project and the user's visibility.
- Add `principal_explicit` to distinguish an assigned principal from a
named filter placeholder, with validations and a
`needs_principal_assignment` scope on ResourceAllocation.
- Add the `step` collection route.
- ViewComponents and form objects under app/components and app/forms.
- Locales for the dialog copy.
Add request, feature, and model specs covering the flow.
The migrations used a date plus a fake incrementing hour counter
(e.g. 20260602120000, ...130000, ...140000) rather than real
timestamps. Those synthetic IDs risk colliding with migrations added
elsewhere in the app. Rename them to their actual file creation time:
20260602120000 -> 20260602152805 add_users
20260602130000 -> 20260602152807 create_..._journals
20260602140000 -> 20260602170908 add_filter_name
create_resource_allocations already had a real timestamp and is left
unchanged. Order and resulting schema are preserved.