avoid copying entire payload twice just to hash it

noticed this while profiling using the memory_profiler gem.

```
allocated memory by location
-----------------------------------
...
/home/sam/.rbenv/versions/ruby-head/lib/ruby/gems/2.1.0/gems/rack-1.4.5/lib/rack/etag.rb:59 x 60334
...
```

That line was the `.join` line luckily hmacs allow us to generate a hexdigest without creating a massive string.