Improve warning for old versions of HPC

Now the warning message includes mention of the input data that is being
ignored because hpc can't deal with it.

This involves a change of behaviour: when the HPC version cannot be
determined, this is now a fatal error, rather than just assuming an old
version.
Fix path (mis)handling when scanning for modules
Merge pull request #1161 from dagit/patch-1

Fix path (mis)handling when scanning for modules (fixes #1160)
Split cabal-install into library and executable components.

Makes it possible to write unit tests for code under Distribution.Client.*.
Merge pull request #1162 from 23Skidoo/split-cabal-install

Split cabal-install into library and executable components.
Merge pull request #1155 from benmachine/hpcmsg

Improve warning for old versions of HPC
Spelling.

s/AmbigousParse/AmbiguousParse/
Spelling, 80-col violations.
Make the UserConstraint parser non-ambiguous.

`+++` and `<++` are right-associative, so `a +++ b +++ c <++ d` is parsed as
`(a +++ (b +++ (c <++ d)))`.

Fixes #1159.
Add unit tests for the UserConstraint parser.
Merge pull request #1163 from 23Skidoo/sandbox-constraints-error

Make the UserConstraint parser non-ambiguous. 
Update syntax of Haddock module attributes

This re-hides several modules that had been inadvertently unhidden by
the change in attribute syntax in Haddock 2.0.0.0 (nearly five years
ago!)