Defend moves when in check. Delaying move legality.

This is a WIP. The test don't even build.

Reworked - yet again - the move generator. Now when we are in check we
only generate defending moves. Otherwise the legality check has been
delayed after the beta cuts happen. The legality check is different when
we are not in check: we check for pins (unless it's a King move).
Added relative history heuristics

This is a WIP.
Fixing test builds.
-O* -> -O2
Fix castle right updates

We hit a combination of moves where one player had castling rights, but
his rook was captured. Here we missed correctly taking the castling
right from him, and allowed him to castle later. This resulted in
corrupted board. Steps to reproduce:

   position fen r2qk2r/1pp1ppb1/p4n1p/5bp1/1n1Pp2P/2N3B1/PPPQNPP1/2KR1B1R b kq h3 0 11
   go depth 1

This resulted in the black king being removed from the board at ~ depth
8 from quiscene search.
Changed king position representation

The king position is now stored as the square where the king is, rather
then the bitboard of kings. As we constantly retrieved the king position
from the representation this makes more sense. Now getting the bitboard
lens is a bit more costly.
Fix the King position representation

Export only a handful manipulation functions from
Chess.Board.Board. This way we can control the board manipulation from a
centralised place. Previously all read/write lenses were exported. This
CI also fixes the previously broken King positions.
Removing duplicate moves as part of legality checking

The legality check now maintains a set structure that keeps track of
moves that were already seen.
Added outpostEvaluation. STS score : 5478 -> 5699.