Massive Recoding

The code should now be cleaner, clearer, represent the turn structure of
a game better and be easier to integrate new cards into. However it was
a lot of recoding so be on the lookout for bugs.