Support for volatile database server

Initializing pool with raise_connect_errors=False will make it
to track connections status and (try) to reconnect to server on
demand.
Fixed Pool callback

Now Pool callback is executed only after really all conecttions
are ready.
Returning early if decided to reanimate connection
Using ioloop's time

ioloop.time() is a proper way to get relative elapsed time.
Using subscription instead of busy-wait

When no connection are available - allocating Future
to get notified when there are free connections in pool.
Its better then doing busy-wait - prevents starvation
and uses less resources.
Dynamic pool sizing + bug fixes
code cleanup
Fixed bug in after-connect callback inocation

Introduced as part of migration to "pending"
connection.
After-connect callback should be invoked when
there are no pedning connections any more