Added TemplateHaskell for pregenerating BitBoards

Added some TemplateHaskell meta programming to generate vector lookups
from functions that map from Bounded Enums like Square / File / Rank to
BitBoards.

Also there is a 2 variable version of the lookup for pair of Enums.