Add undo_move to board.

Testing suites need to be developed more for this; hopefully perft will
definitively prove this program's effectiveness.
Make undo_move available to Ruby

Currently, this requires the Ruby code to provide the method to be
undone; a util method might allowing undoing without this by using
board->history.
Add minimal testing for undo_move

Promotion-testing still needed, but perft will really prove move and
undo_move work.