Minor code tidy-up in build client
Add a --dry-run flag to the build client

So it does not actually upload anything. Helps with testing/debugging.
Significant overhaul of the builder client

Manages the build reports and log files itself now, and uploads them
itself. Keeps a more persistent record of what it has done, including
log files of why things failed.

Should now reliably upload build reports and log files.

Other simplifications and code tidy up. Could still do with more tidying
to reuse existing utils better (like the http utils & Cabal's process
functions).
Add an option to the builder client to prune unnecessary haddock files

In particular, to remove all the frames stuff that doesn't work.
Fix parsing of build reports

In the Either monad, fail is now error not Left. Was causing a 500 error
rather than a proper 400 error.
More sensible http response codes for docs and build reports