Adds promotion to king status.

Kings can move in either direction.
Adds a perform_moves! method to Piece.

perform_moves! performs a sequence of moves, if it is a legal one. It
modifies both the piece and the board. It will raise exceptions if the
sequence is invalid, or if any errors occur while trying to execute the moves.