Removed all usage of std::shared_ptr in the engine. Currently everything return / use a raw pointer and memory is manually managed.
This is not the ideal solution as the user is responsible to deallocate his own memory instead of letting the engine automatically do this.
Resources loaded through the ResourcePool are automatically deallocated. Also, memory is also deallocated when ownership is clear (for instance a Node own it's children and therefore frees them).
but a material which was manually created (not using the ResourcePool) is not freed automatically.
Also special consideration needs to be taken when deleting objects (for instance, each TerrainPatch has it's own unique vertex buffer
stored in it's geometry but they all share the same index buffer, therefore automatically deleting the index buffer and vertex buffer
in the Geometry destructor caused the index buffer to get deleted multiple times)
Currently only the test project has been refactored to accommodate this change.