Etag Caching Middleware

Created a middleware that does correct etag based caching so we can avoid
transmitting data the client already has.
Merge pull request #61 from blackboxsociety/etag_cache

Etag Caching Middleware