Almost completely decoupled victory_table logic from the classes

Put victory_table into its own class, made it responsible for
validating moves, determining winners, setting itself up, etc.

Could still probably stand to do some work on victory_table
initialization (just like with player initialization), but decoupling
is most of the way complete.

We're not too far away from having a generic player and AI_Player
class, both of which could be re-used in other programs.
Merge branch 'Decouple-victory-table-from-other-game-logic'