Connection pool implementation

- Implemented #20
- Fixed #72

Implemented and tested functionalities:

- Pool implementations that has a limit on total connections which is dynamically changeable. 
- Connections are automatically returned to the pool once the HTTP response is over
- Make sure ReadTimeout will make the connection close and not reusable
- A configurable connection idle timeout
- Checks HTTP header "Connection" and "Keep-Alive" to determine if connection can be reused and its expected idle timeout from server side
- On request of connection, remove one idle connection if pool has reached capacity
- Metrics to monitor total and idle connections. Counters for successful/failed connection request, connection reuse, connection removal.

To Do:

- Close the connection (no reuse) when the subscriber is unsubscribed and the response is not over, or there has been an error (to be safe and make things simple)
- Return connection to the pool to reuse when the subscriber is unsubscribed but the write has not happened yet