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