Key cached response by varied headers

With these changes, connect-guard will store separate freshness information based on the request headers listed in the `Vary` response header.  Useful for serving different content to different user-agents.  `Vary` headers must be set in middleware run before connect-guard.  See the example below

``` coffee
app.get '/users', (req, res, next) ->
  res.set 'Vary', 'User-Agent'
  next()
app.get '/users', guard()
app.get '/users', (req, res) ->
  # ...
```