back port haddock cpp fixes to 1.18

These five commits remove support for Haddock pre-2.0, and do so to fix a problem where Cabal, if CPP was listed as an Extension, would pre-process the file before handing to haddock, which would cause ghc to pre-process file as well.

This double pre-processing was clearly wrong (possibly leading to wrong line numbers in haddock messages), but more importantly failed when the system compiler was clang. This is because c preprocessing is not idempotent, and under clang, the changes resulted in syntax errors.