Replace the `*_impl` proxy creation functions with type traits that name the
selected lifetime model, so that the models can be reused by types other than
`proxy` (e.g. an upcoming `box`). No observable behavior change.
- Rename the internal `allocated_ptr` class template to `wide_ptr`, and add
`allocated_ptr`, `owned_ptr` and `shared_ptr` type traits that select a
lifetime model instead of constructing a `proxy` directly. The creation
functions now construct `proxy<F>` from the selected pointer type.
- Let `inplace_ptr` ignore its first constructor argument so that all owning
lifetime models share a uniform `(alloc, args...)` construction signature.
- Order the `T&& value` overload first in each creation function family, and
renumber the corresponding specs to match.
Replace the *_impl proxy creation functions with type traits that name the selected lifetime model, so that the models can be reused by types other than proxy (e.g. an upcoming box in v5). No observable behavior change.