Add "file2raw" transform to HTML form wrapper

When invoked, it translates HTML file uploads into RESTful requests.
Implement documentation upload form
Add --reinstall option to build client

This lets us regenerate documentation when dependencies are updated.
Remove old unused build reports page
Expose build reports in the feature API
Fix build report parser

This adds an explicit distinction between required and optional fields,
so we don't get an error if the latter are missing.

Closes #226.
Add build log retrieval to reports feature API
Implement build reports view
Give tables a bit of wiggle room
Added support for etags when downloading the package index.

Now the server will return a 304 status code instead of a 200 (with a full
response) if a client includes an up-to-date etag in the request.

HttpUtils in cabal-install already has support for etags, so this should
immediately make consecutive "cabal update" calls significantly faster once
deployed.

ETags should also be properly supported for PackageTarball and DocTarball.

This change adds a generic helper in Distribution.Server.Util.Happstack (useETag)
that both sets the ETag header in the response and checks the response
for a matching ETag, short-circuiting with a 304 on match.
Makes the title order more sensible.
Merge pull request #242 from chrisdotcode/change-title-order

Makes the title order more sensible.
Merge pull request #241 from gintas/etags-clean

Added support for etags when downloading the package index.
Add extra goodies to build report type

The build report structure gains two fields:

* A time stamp;

* Documentation builder flag, which is True iff the client was
  generating documentation for upload.

In addition, solver failure is added to the list of install outcomes.

This only changes the types and migration machinery; front-end support
will come in a later commit.

The existing migration code (commit 111f3897) has also been removed; I
couldn't make it fit with the new changes. As the former is quite old
(Nov 2013), the removal shouldn't be too worrying.
Add timestamp to build report view
Affix a timestamp to every submitted report
Add queryPackageReports
Add build status indicator to package front page
Only allow doc builder flag when user can upload docs
Build client: add doc builder flag to submitted reports