Added InvalidMoveError class as well as a lot of funtionality in Board and Piece.