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.

I'm sure there's a reason for this, but the Client and Params structs seem a bit convoluted to me. What was the motivation for having both?