Setup `Client` for building live and test clients

This sets up the `Client` to eventually provide a live and test
client. `Client` is now a module that will eventually look at the
test mode and decide to either build a live or test client. For
now it always builds a live client, keeping it consistent with how
it previously worked.

This also moves the call runner logic to it's own file and changes
it from an open struct to a custom class. This is also setup for
more logic being added to the client file (for the test client) and
to avoid the file become hard to work in.

Finally, this removes the fake connection that was manually built
in AndSon and switches to using the Sanford-Protocol fake
connection in the call runner tests. This is to help with future
maintenance and not having to keep a separate fake connection
compatible with any changes made to the protocol.

@kellyredding - Ready for review. This diff is rough cause I pulled out the call runner logic and its tests. I didn't change any call runner logic outside it is now a class and not an open struct. I basically redid the tests for the client and call runner. The client tests structure had to change because of it now being a `Module`. The call runner tests were in a poor state, they weren't using the protocol fake connection and they were actually starting a server and hitting it like a system test. This makes them true unit tests.
@jcredding to be clear, these should probably be moved into an instance methods module and manually included to allow explicit include ordering.