Optimising move legality checks

The optimisation gives about 10% speedup for the following case:

    ./dist/build/chess/chess +RTS -p <<EOF
    position fen r2q1rk1/ppp1npbp/3pb1p1/n7/4P3/2N2NQ1/PPP1BPPP/R1B2RK1 w - - 0 13
    go infinite
    quit
    EOF

The results from before:

    real 1m19.928s
    user 1m19.100s
    sys 0m0.590s

The new results:

   real 1m11.858s
   user 1m10.947s
   sys  0m0.620s

Some ideas are borrowed from the stockfish implementation. Interestingly
the `moves`, `forcingMoves` functions don't benefit from the change,
using the new function makes them slightly slower. The main cost centre
is still in the legality check, now in legal.checkers.attackedFromBB.

Added some QuickCheck to the suite framework to assert the correctness
of the new legality check.

The `BitBoard.TH` needed to drop the INLINE pragma, as the compiler
couldn't deal with inlineing the new vectorised function (probably the
lineBB with 64x64 entries).