This code is in need of refactoring / cleanup before continuing, so this is a commit before cleanup.
Added PlayerFactory to make the main game loop cleaner.
Cleaned up the Main method, created a Controller class to try to clean up the Player classes. Controller is a singleton, which makes getting an instance more verbose than I would like, but I see no way around it. This commit is broken, but I've made enough progress that I should commit before continuing to work.