Generic implementtaion of special Ints like Int40.

CPP macros and class types used to easily generate new special instances for special types like Int40.
Note that on Mac, the standard CPP is using -traditional so the hash are kept after expansion.
So the cabal file has an option for using llvm-gcc -E for preprocessing.