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.