Fixed several long-term issues that were caused by using raw pointers to hold game objects. Now, all game objects are stored in std::unique_ptr's, which required massive changes to support.