Uses/cabal.mk: Improve our Cabal machinery.
- Introduce CABAL_PROJECT variable to simplify handling project files in ports.
- Put dependencies into ${WRKSRC}/_cabal_deps subdir to make WRKSRC look clean after extract stage.
- Perform cabal.project trickery on post-patch stage to allow users to fiddle with the original one before creation.
- Document some code.