Fixing Pool Issues with pool becoming > maxSize() and semaphore not releasing

If a non recoverable error occurs, and the max pool size has not yet been hit, the gotError method will get all connections in the pool, as well as create new ones. This should not create new connections and just close the existing connections. Also edge case occurs where if we are at max connection count AND we have 0 available connections the pick method returns -1 anyway, This creates a new connection in the get method which causes the pool to be greater than max. Therefore freezing up our semaphores and not allowing any connections to be released.