Cleanup
The codebase for make/unmake and especially deducing castling rights, has become a horrible pile of sphaghetti code. In particular the castling stuff was based on side effect on an internal state in castling.c, which is ghastly (and obviously not thread safe).
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.