Unnecessary ping to ES for every single client requests and catch error gracefully

Previously if the host was unreachable, the raise method would never be invoked, so you would receive this:

`2014-08-30 08:41:07 +0000 [warn]: temporarily failed to flush the buffer. next_retry=2014-08-30 13:11:05 +0000 error_class="Faraday::ConnectionFailed" error="Failed to connect to x.x.x.x port 9200: Connection refused"`

instead of
`2014-08-30 08:41:07 +0000 [warn]: temporarily failed to flush the buffer. next_retry=2014-08-30 13:11:05 +0000 error_class="Fluent::ElasticsearchOutput::ConnectionFailure” error="Can not reach Elasticsearch cluster (x.x.x.x:9200). Failed to connect to x.x.x.x port 9200: Connection refused"`
Reset connection and try again when pushing logs upon connection failure
Test coverage for retries
Obfuscate passwords from logs
Reset connection on timeout
Merge pull request #1 from dominicbecker/connection-retries

Reset connection on timeout
Merge pull request #67 from ably-forks/connection-retries

Connection reset & retry when connection is lost