Proxy is now implemented as a chain of handlers each of which performs a single aspect of the functionality; reading from tape, writing to tape, performing real connection, etc. This is much simpler to test as the logic is modularized. I've also got rid of some of the _Request_ and _Response_ implementations. Generally there is a bit less copying of request/response data from one object to another. Certainly there's a lot less complexity in fitting request/response types into generic interfaces. It would be nice to be able to just drop any request/response implementation into `MemoryTape` but I can't figure out how to get SnakeYaml to then read the tape back as `RecordedInteraction` must refer to concrete types or SnakeYaml doesn't know what type of object to construct. If I could get this working there would be still less request/response copying as the `RecordedRequest` and `RecordedResponse` classes would only be used when a tape is read, not when it's written.