use rack::etag

I think I got the ordering right, tested it with and without gzip:

```
 ➤ curl -sni https://staging/user/notifications -H 'Accept-Encoding: gzip, deflate' | head -n 10 | grep etag
Etag: "95a229c1164994928e5d83cc39736a6a"
➤ curl -sni https://staging/user/notifications | head -n 10 | grep etag
Etag: "95a229c1164994928e5d83cc39736a6a"
```