Refactor request handling.

- Create handlers for each type including cache, stubs, and proxy.
- Wrap handlers up into request_handler.
- Move lots of code out of Proxy and ProxyConnection which doesn't
  belong there.
- Break lots of tests. This is still a work in progress, but given
  the size already of this commit, I wanted to get my work so far
  committed.
Should use if, not unless
Add handle_request delegator
Fix all the things.

- Use em-synchrony to handle proxy requests synchronously with server request.
  This fixes the previously failing ProxyHandler, which made rendered this
  entire branch useless.
- Make Billy::Proxy a singleton, since really there can only ever be just ONE.
- Fix failing specs due to above mentioned change.
- allowed_response_code? should return a boolean.
-
Update StubHandler per GitHub comments.
Remove comment cruft from Billy::Proxy
Move RequestHandler to same directory as other handlers.
Remove unused NotImplementedError exception class
Fix imports.
Boolean methods should return booleans
Newlines.
Add restore_cache back in for backwards compatibility.
Fix bug in RequestHandler#reset_stubs
Increate proxy_spec timeout to reduce/eliminate errant spec failures
Add unit tests for Billy::Handler and Billy::RequestHandler
Add some unit tests for the proxy handler.
Remove ProxyHandler#whitelisted_host? in favor of just using ProxyHandler#whitelisted_url?
Remove dummy cacheable_headers? method
Add one more unit test for ProxyHandler
include pry in spec helper. Add CacheHandler unit tests.