Proposed Garner 0.4.0 (a.k.a 1.0.0-alpha)

Whole lotta changes here. I'd recommend starting by reading the [upgrade notes](https://github.com/macreery/garner/blob/identity-crisis/UPGRADING.md), and then moving on to the [README](https://github.com/macreery/garner/blob/identity-crisis/README.md), followed by the actual code.

The goals were:

* Fix all open bugs. #6, #12, #13, #14, #15, #23 and #24 are all fixed here.
* Resolve long-standing loopholes in the API which made it too easy to shoot oneself in the foot.
* Clearly define bindings as a separate object from cache context keys, to make the API easier to understand.
* Create a more extensible framework for more performant or context-specific key and invalidation strategies.
* Decouple the library from Grape. Now, any Rack application is supported, with integration tests for Grape and Sinatra.
* Decouple the library from Mongoid. Now any ActiveModel-complilant ORM is supported, with integration tests for Mongoid and ActiveRecord. There's still a focus on "extra" Mongoid support, so we may soon choose to extract this support into a separate `garner-mongoid` gem; that should be straightforward from here.
* Remove HTTP caching responsibilities from the library entirely. These should be managed by a separate library. Integration tests have been written to make sure that all old HTTP caching functionality is preserved when using `Rack::ConditionalGet` and `Rack::ETag`