Split constructor of Connection

This method was just to unwieldy.
This can be seen as a first step to introduce a Faraday Factory.
Not sure I understand what you mean. Do you mean that the Connection class does the merging of the options with the defaults or do you mean that there is no merging at all: If the user of the library provide request middlewares she has to provide the those three middlewares herself?