csclient: new package

This is the start of the client-side charm store code.

We also factor out the JSON equality checking so that the csclient tests
can use it.

This allows us to have a Client struct which potentially has mutable or derived state (although at the moment we're not using that capability). Another example in the charm store is v4.NewAPIHandler.

If all the parameters were just in Client, we wouldn't have the possibility of a New function.