Fix bugs in Piece#valid_moves; add Board#checkmate?