fix move_check_info() (6188937)
simplify board_in_check()
move Chess960 and StartFen to types
They do no really belong in board, nor in uci:
- Chess960 could have belonged in the uci naespace, as it is an UCI option, but having board.c include
uci.h is ugly (board should be extractable without UCI dependancy).
- StartFen is only an input to board_set_pos(), which itself is completely agnostic and has no notion
of what is the normal starting position of a game. So it doesn't belong in board. Again, it could be in
uci, because UCI protocol has the notion of "startpos", but that would mean board.c include uci.h, which
is out of question, for modularity.

Also putting those in types means they are exempt from being in a namespace, which saves a bit of
typing...
optimize board_play()
castling branch is now tested in the piece == KING branch, which is not so hot:
- first, play the caslting move as KxR normally.
- then, in the castling branch, do the necessary corrections.
this also eliminates a goto, and better factorizes some code, which is nice.

speed gain ~= 2.8% on perft test-suite.
optimize zobrist castling update
speedup ~ +3.9% on perft test-suite.