Reimplement isMoveValid

isMoveValid was formerly used to test if a move that had been created
was valid on a certain board. It is now used to validate potential
moves to ensure that an invalid move is never created.

Since invalid moves cannot be created an entire class of errors
can be avoided by definition.