Fix bug in move creation.

A move's capture value is in fact the piece being captured; previous
code erroneously treated it as a boolean value.
Fix bad testing for Moves

Moves should have a piece for their "capture" value (or false or
NO_PIECE if it's not a capture).
Add more tests for undo_move

Still not completely foolproof, but most bases are covered here. Again,
perft will finish this for good.