Fix caching and hashing

The old caching behavior relied on `#eql?` for finding hash matches, but this won't work for things like memcached, since memcached can only use strings for keys. This pull requests makes memcached caching work again.

I also fixed `Request#hash` to work for different key orders, since `Request#hash` is now used as the cache key.

I wasn't able to test the `spec_helper` changes I made on 1.8.7 since it's not even possible to run `bundle install` on 1.8.7 anymore since the latest celluloid doesn't support 1.8.7 anymore. I'm pretty sure the change works on 1.8.7, but seems like it doesn't really matter since 1.8.7 is all but abandoned anyway.