Move deep_ptr into the memory component.
Finish most of deep_ptr implementation

Add empty test skeleton for deep_ptr
Add task for core::make_poly<T>
Set make_unique tests to pass

a few assign-operators and constructors are still required before
deep_ptr will be considered 'finished'.