Improve read and write performance

Pull request for CSHARP-130.
- Connection: No read locks.
- Connection: Minor write synchronization for the write queue.
- Connection: Cancel all pending operations when closing.
- Connection is now testable (15+ tests included!).
- HostConnectionPool class: Handles connection per hosts.
- RequestHandler class that deals with the host failover and retry (also as a context for previous request until completed).
- More than 30 new tests: lots of integration tests for Connection class, more session test and some more unit tests.
- New socket wrapper: Abstracted away all .NET internals. Use most performant .NET socket interface (SocketEventArgs) for cleartext data.
- Removed Cluster and Session finalizers (the classes do not own unmanaged resources).
- Connection tls support: Added Certificate collection, host name resolver and certificate revocation options.
- All Begin/End APM methods now uses task internally