Catch TransportExceptions instead of just OperationTimeoutException

The pinging process should catch all transport-level exceptions,
not just timeouts. Previously, the ping would fail if a host was
unavailable, unable to resolve, etc.

Changing to TransportException catches all these errors (and more),
making the ping process faithfully mark nodes dead instead of
throwing exceptions to the user

Fixes #19
Respect skips in setup section

Due to the nature of the Symfony yaml parser, new documents in the
same stream ("---") must be manually extracted. This setup meant
that the yaml runner was not applying skips in the setup to the
entire document stream.

Implemented a fairly hacky way to fix it, will need refactoring
at some point (once the whole runner gets a facelift)
Rework StaticConnectionPool pinging logic

The StaticConnectionPool now only pings nodes when they are first
used (instead of on startup), and has better logic to handle
the pinging/failure process.

Also implements helper functions in AbstractConnectionPool for
things like ping timeout and ping failures, which are used to
exponentially backoff ping timeouts.

Fixes #20