isLegalMove now provides a reason why a move is not legal (closes #182)