'cabal init' now looks at git author info.
Reorder 'cabal init' author heuristics.
Separate IO out of 'cabal init' author heuristics.
Merge pull request #1188 from chreekat/git-authorname-heuristics

RFC: Adding git prefs to 'cabal init' author-lookup heuristics
Much faster Distribution.Client.Dependency.Modular.PSQ.splits

This reduces the runtime of "cabal install --dry-run" on a large cabal
file (550 dependencies) from ~12s to 2.1s. Equivalency with previous
implementation verified with QuickCheck in ghci.

This is a guess: The speedup is mostly due to how to the previous
entries are added to the result of the recursive call. Previously, for
every entry to be added, the whole result list is mapped over (lots of
allocations), and then each tuple is taken apart and reconstructed with
a changed right value (again, lots of allocations). The new code
assembles a function in an accumulator that represents the required
update and applies it where needed, hence building the list and tuples
only once.
Merge branch 'fast-splits' of https://github.com/nomeata/cabal
Merge branch 'master' into init-other-extensions.

Want to make use of chreekat's recent refactorings+additions in Init/Heuristics.hs.
implement a poor man's LANGUAGE pragma parser