Wait smarter for an empty connection pool

The current behavior means that calling `.disconnect()` will necessarily wait for at least 500ms before the `Deferred` returned fires. It's trivial to, instead, return a `Deferred` which fires as soon as the last client in the pool disconnects.