Fix possible deadlock with bounded pools (TORQUE-1188)

The zero-downtime deployment work done for TorqueBox 3.0.0 introduced
the potential for deadlocking when borrowing / returning runtimes to a
bounded pool. This fixes that issue by splitting a single restart lock
into separate borrow and return locks so that borrow and return don't
lock with each other, and instead only lock with the restart action.