Fixed writing empty CastlingRights into fen

We wrote an empty string instead of "-". Added quickCheck tests and
modified the Arbitrary instance of Boards so it's generated with the
board hash (so the property of Just b == fromFEN $ fen b holds for every
b).