Keep dialing database addresses before giving up
Support a recycle option to recycle connections

This is needed to spread the load out amongst multiple nodes. If some nodes go down, connections may never be reestablished when those nodes come back up.
Do connection recycling checks before new operations occur, rather than deadlining the socket

This prevents errors from occuring in the middle of queries, and works around possible flaws in the database/sql wrapper when unexpected errors arise due to i/o timeout.

The check has only been added to functions I was able to test, it may also need to go on Exec, Begin and a few others.
Formatting
Merge remote-tracking branch 'anacrolix/master'