Encapsulated functions for building actions.

This will make more things available for AI code to use.
Updated readme with chess->checkers analogy.
More AI functionality - set of adjacent enemies.
Skip a unit's turn with the 'S' key.

If you need to use this, you've likely already lost.  However, I have
seen cases where doing nothing is the optimal move.  It's also the only
valid move if you manage to surround a unit with all friendly units.
More const-correctness in GameState.

I think this will help with AI stuff as we're making lots of copies.
Remove undefined behavior from using const_cast.
Make move actions available to an AI player.
Make attack actions available to an AI player.
Removed some unnecessary asserts.
Make game state more copyable.

Using an iterator for active unit meant that copies would point back to
the original object.  AI will need to make lots of copies of GameState.