Correctly check for missing castling rights or en passant information in Position::is_valid_fen

Incorrect checking of missing castling rights or en passant information was leading to Position::is_valid_fen declaring valid FEN strings as invalid.

For example, the following string would be declared as invalid:

rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq

This fix correctly checks for this missing information, and adds some tests including one which fails without this fix. I wasn't able to run the tests because I ran into some problems with Xcode.