Update `TestClient`, track all calls made with it

This updates `TestClient` to track all calls that it makes. This
is so it can act as a spy and users can check that a call was made
with the expected name and params. This also updates the
`TestClient` to have a `reset` method that will clear its calls
and remove all of its configured stored responses. This is so
this one method can be called in a test teardown. This makes it
easier if a client is re-used instead of having to manually clear
the calls and keep up with all the configured responses.
Merge pull request #34 from redding/jcr-store-calls

Update `TestClient`, track all calls made with it
Allow more flexible adding of stored responses

This updates stored responses to allow adding complex responses
in a simpler manner. If the block that is used with `add` expects
an argument, a response will be yielded to it. This response can
have its code, message or data changed in the block and will be
used as the response. This will allow users to not have to manually
build a protocol response. If an argument is not expected, then the
block will work as it previously did.