Add a `ConnectionSpy`

This adds a `ConnectionSpy` that can be used to replace a real
connection in tests. This allows avoiding hitting redis in a
test suite and also to inspect what calls were made and with what
args. The spy responds to the same methods as redis and will
track any calls made to those. Finally, the spy can also be used
as a base to add extended behavior for specific redis commands.

This also updates the `Connection::Config` to default its size to
1. `ConnectionPool` will error if size is `nil`. This also adds
tests for `Config` to test that it properly defaults it.