added lazy loading option for connection pool

Lazy loading option added.
Used passing :loading => :lazy to ConnectionPool's initializer (defaults to :eager).
When a connection is requested by the client, the pool's:
1) creates one and returns it if it was empty (still have open slots - all connections were being used)
2) returns one if it's available
3) returns an ConnectionPool::ConnectionPoolFullException if all connection slots are being used