1. rewrite the init function of ConnectionPool:
1.1 remove hard limit of the pool
1.2 add arg `con_lifetime` for resolve server side close due to the 'wait_timeout' variable; and used for pool scalability
1.3 add arg `pre_create_num` indicate that is create some connection ad init phase
2. enhance the robustness of the 'put connection back to pool' function
3. expose a stats of used and available connections at the point, via the `connection_num` property