Cleanup
The codebase for make/unmake and especially deducing castling rights, has become a horrible pile of sphaghetti code.
Rewrite all this in a much clean way, using a true copy paradigm, without an undo() function.
Also add PinInfo and AttackInfo which will be useful for movegen, and many other things down the road.

Currently the code is limited to Chess960 with Seirawan pieces, and doesn't support Seirawan castling (RxK) and gating. Will be added later, won't be hard with the current codebase. Just want to thouroughlly test Chess960 perft, before adding Seirawan. Also want to get an idea of the tradeoff: how much raw speed do we lose by implementing Seirawan? My guess is not much if done cleanly. We'll see.