Reworked representation of CastlingRights

The CastlingRights were represented with `[ Castle ]`. This didn't have
the "right feel" to it, as the list could be arbitrary length, any order
and could contain simple `Castle`s multiple times. Now the
representation is a newtype wrapped (Bool, Bool) with Monoid, Enum
instances. Monoid for construction under FEN parsing, Enum for later
Arbitrary instance and the ZobristKey generator.