Improved exception handling for invalid moves.
Changed a few more recoverable errors to throw IllegalArgumentExceptions.