In the case that object creation throws an exception, the `@created` counter was still being incremented, effectively taking up a slot in the pool forever.
This allows the hooks to do arbitrary things based on options (keyword
arguments) such as creating a particular type of connection based on,
say, connection_args.
The ** syntax for arbitrary options is not used as it is not supported
on ruby 1.9.
Now TimedStack only creates connections when the internal queue is empty
and the number of connections is less than the maximum set. By default
no connections are created when the pool is created.
This required some changes to the TimedStack tests because I wrote poor
tests the first time around. The new tests better exercise the intended
behavior of TimedStack.
This required some changes to the ConnectionPool tests to use up
connections because now an unused pool has no connections.