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.