Added an player class interface.
Modified the transform class to support std::make_shared.
   -I'm beginning to think we may need to invert the parent child relationship.

There's now an ITransformable object but I'm not entirely happy with it yet.
   -We should probably forward some of the Transform methods to the interface because camera.get_transform.cpp()->position() is too cumbersome.

Camera now makes use of the ITransformable interface.
   -This is largely so that we can use the parent relationship within the player class. (Will be useful for a 3rd person camera).