Implementing negotiate request

Because then I wouldn't have a chance to setup my web_request fake and as a result I would have to create separate web_request fakes to test different scenarios. With the factory I can set up my web_request fake and tell the factory to return it. I don't especially like this pattern since it looks like I would have to create a factory class for each dependency I want to inject. Therefore in #12 I try a different pattern where for dependencies that can be passed by value I allow passing the dependency or create one using a well-defined ctor if none is passed. Because I pass things by value I have to use lambdas to set the test fake but the advantage is I can basically use it as a mock and define the behavior (see the `test_websocket_client` class in #12). I am thinking about using the same pattern here which would allow me to remove the `web_request_factory` entirely. 
(DI seems to be very hard in C++)