Extracted simple classes into fundamentals.py.

Rewrote the Game class, to make more sense.  Several other classes received small changes to reflect the Game rewrite.

Renames all `map` occurrences, because that was dumb.