Consolidate request handling logic and separate out connection reading/writing

This moves the small amount of request handling logic in `Host` into the `Processor` (renamed from `Connection`). Then I modified the processor to not interact with a protocol connection directly. Instead, it is passed a `proc` for reading the request and sets response data that is then written. The benefit of this is that the processor can now just store off each piece of handling the request (and not have to either be one large method or pass around variables). This also allows unit testing the processor directly instead of writing the heavy system tests to verify the entire stack.

@kellyredding - These are the changes I've made so far in redesigning the request handling process. This doesn't include any modifications to the `halt` method or adding a "Runner". I mentioned the unit tests, but haven't gotten to converting any of the current system tests to unit tests. I'd like to convert most of them as th