Connection exceptions in Client exception

As we discussed in #315, i've added connection exceptions to client exception so there was possibility to get more verbose information why request has failed.

Also added abstract *getDsn()* method to *AbstractTransport* and implemented it in all transports. The purpose if this method to return human readable info about transport and connection it uses like: protocol, host, port and path. For Http transport it would look like this **http://localhost:9200/path** and for Thrift protocol like this: **thrift://localhost:9500**. It is used in client connection exception message for easier understanding what connection caused error.