connection limit in pool via semaphore

Modified "NewPool" to take a connection limit that is enforced by a semaphore (a buffered channel in this case).

```go
NewPool(newFn func() (Conn, error), maxConn, maxIdle int) *Pool
```

One issue is I've left the tests untouched; I couldn't get them to pass originally, and I didn't want to speculatively modify the code.