Fix bug 1054472: Use ETags to determine if we can send 304s.

Changes the fetch_snippets view to add ETags to outgoing responses that
are a hash of their content. It then uses the incoming ETags from
clients to determine what snippet content the client currently has 
cached, and whether new snippet content needs to be delivered or if a
304 can be sent to instruct the client to use their cached snippets.

This should allow us to increase the frequency of updates by lowering
the amount of data we need to send.
or alternatively `if result.kwargs.pop('skip_middleware', False):` and you don't need to `del`