Simplified the Move generator ordered MoveQueue

The MoveQueue was pointlessly the pair of weight and the Move
itself. This was not just pointless, but probably we double executed
compare on moves where the value was equal (depending on the Ord
instance of pairs).
Fixed loading en Passant square from FEN

The FEN contains the en Passant target square. Our board representation
contains the square on which the pawn is that can be taken en
Passant. It's matter of simple maths to convert one from the other.
Rewrite of the move generator

The Move Generator functions have been split along some heuristics
rather then each function generating moves for a given piece type. Now
we generate checks/discovered checks first, then captures and then quiet
moves. The quiscene search does only generate checks and captures. We
limit the heuristic reorder of the moves to particular move types. Ie
checks always come first, captures are reordered based on piece value,
quiet moves on position.