Updated gems, cache request headers, handle non-successful responses, ability to stop new connections

Another group of features to help handle edge cases and isolated environments.

 * Optionally cache request headers
 * Optionally skip caching non-successful responses
 * Optionally throw an error for non-successful responses
 * Optionally disable proxying non-whitelisted URLs, throw an error if attempted

All of these are disabled by default so there are no functional changes besides some updates to logging.

I also ported over some rake tasks I've been using that felt common enough to include in the gem and updated all tests to use the `expect` syntax.

Note: All gems are updated in this branch as well, which should help address the URI parsing issue here: https://github.com/oesmith/puffing-billy/pull/29