Do not retry when timeout is hit

this PR adds a safeguard for retrying after the timeout is hit as reported on #1080 . This prevents a query that took 60seconds on one node to be retried on a second node or if a query took 30seconds on 2 nodes to be retried a third time.

By default this listens to `SetTimeout()` which itself defaults to `60 seconds`. The max retry timeout can be configured separately by calling `SetMaxRetryTimeout()`.

The MaxRetryException message itself clearly reflects when its thrown because we exceeded the `MaxRetryTimeout`.