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 -> 952499b
 * move connection establishment outside of the `synchronized` section -> df7ee38

This should allow for more concurrency. Related: #14891, #14919.

As per @matthewd's suggestion:
 * remove synchronization from around the `@reserved_connections` cache -> 7afd64d
From this usage, we're relying on our `@lock` synchronize boolean toggles. Is that equivalent to using a `@new_connections_allowed = Mutex.new` directly? Then we `@new_connections_allowed.synchronize { ... }` and check `@new_connections_allowed.locked?`