Feature/simplify iconnection

This is still a work in progress but resembles a second refactor pass on `IConnection` after @icanhasjonas excellent feedback on #537 and earlier by @synhershko on #522 

* `IConnection` now only returns `ElasticsearchResponse<Stream>`
* `IConnection` no longer in charged of deserialization, this is pushed back to `Transport` which is the coordinator between `IConnectionPool` and `IConnection` and already did the serialization.
* `<T>` no longer leaks throughout all the components involved just to be able to deserialize in the deepest call in the stack. 
* `IConnection` no longer in charge of shortcircuiting for `<string>` `<byte[]>` or ignoring the stream completely for `<VoidResponse>`. A connection is now only in charge of returning a response stream and settings connection status data, it should not know more of the internals.
* As a result you can now do `client.Call<Stream>()`  and do as you please with it your on your own (but please Dispose() it!)
* If you do not specify a `Stream` return type Elasticsearch.Net still takes ownership of the Stream and disposes it properly.