Big refactoring - Update engine structure

Create GamePlay class to differenciate physical and virtual gameplay.
Get rid of temp interfaces... this isn't complex enough to need them
Create 2 test classes for both virtual game and physical
Update classes to use more of a dependency injection style for the most part (even though we're not using that)