Restore accuracy to safe contact checks

The "Evaluate pins exactly" patch introduced a bug in the
safe contact check code.

If a piece is currently pinned there is no guarantee that
it will also be pinned when the next move is made. A move
by the attacking player may therefore allow extra moves
by the defending player. This breaks the logic in the safe
contact check code.

(Funnily enough, the original "Restrict mobility of pinned
pieces" patch seems not to suffer from this bug because it
only restricts pinned piece moves by masking with
PseudoAttacks[QUEEN][ksq]!)

The solution chosen here is to leave the attackedBy[][]
array as it was and introduce a new array called movesBy[][]
that is aware of pinned status.

It may also help with king safety too, because while pieces
that are pinned can never give a safe check unless they
capture their pinner, they can certainly help to support
other pieces giving check or restrict the king themselves.
Take xray defenders into account for safe checks

For example Qf1 is not a safe check in this position
6k1/5ppp/8/8/8/4B1P1/4bPKP/2Qq4 b - - 0 1