isLegalMove() complete implementation

Notes:
- does not handle pawn capturing
- didnt actually compile this to test it