Apply connect timeout to acquiring a connection

Trigger a timeout if it takes us longer to acquire a connection from the
connection pool than whatever the connect timeout is set to. This prevents
hangs in any client that doesn't set the connect timeout to infinite.

Note that as part of this change we also make the connection pool size
configurable. This aids with testing, but is also something that clients
could actually use.