Add several tests to core::polymorphic

Fix compilation issue with respect to core::polymorphic unique_ptr constructor
Fix compilation issue with bad_polymorphic_reset

All that is currently left to implement for core::polymorphic is to move
some of the inner typedefs to the public section, as well as define the
equality-comparable and less-than-comparable operator overloads.