Refactor move generation.
Add tests for pawn moves.
Implement more efficient __contains__().
Implement normal and en-passant captures.