Implemented event queue/message passing system

This system gives us the ability for game objects to communicate
with the game entity and have the game execute things (such as
movement), instead of calling the objects directly from the global
scope.