Resilience to errors, and a dash of encapsulation

It has been felt that Rummageable ought to be more resilient to server failures, network issues, and other gremlins. The existing API (static methods on a module) also makes for more verbose code than is necessary.

This PR attempts to solve both those problems, with a re-write. To get a quick overview of the new API, see the README.md file. There's a `new-rummageable-api` branch on the alphagov/whitehall project that has an example of the new code in use.

Note that this change is backwards incompatible; other apps will need to be updated when the gem is updated.

https://github.com/alphagov/whitehall/tree/new-rummageable-api (also alphagov/whitehall#652)
https://www.pivotaltracker.com/s/projects/367813/stories/51654739

/cc @heathd