Added ContainerConstructionTraits for generalized Container support

The introduction of an additional trait allows to specify how to obtain
a container from a raw pointer which allows types that provide that
functionality for shared_ptr via shared_from_this to be managed by a
shared_ptr.