Fix isValidMove: make it less permissive and add an optional movingPlayer param.

Closes #13. Closes #8.