Reducing AR::ConPool's critical (synchronized) section

This is an alternative (much lighter in scope) PR to #14926, only the smallest possible amount of code is changed.

The objective is to:
 * move connection verification outside of `synchronized` section -> 3590eea
 * move connection establishment outside of the `synchronized` section -> 6eda088

This should allow for more concurrency. Related: #14891, #14919.

As per @matthewd's suggestion:
 * remove synchronization from around the `@reserved_connections` cache -> ca85c48
The problem is that the condition-wait/spin loop is encapsulated in `ConnectionPool::Queue`, that in turn has no knowledge (or reference) of the pool state, so once a thread goes into `wait_poll` it cannot "escape" and the only place for it get a hold of the connection is if we create a new conn and then check it back in. Signaling to the sleeping threads is of no use, they are helpless when woken up (because of being stuck in `ConnectionPool::Queue#wait_poll`) and have to be spoon fed new connections (by adding them to `@available` queue).