Support creating and modifying repos

There are a few TODOs in here which I plan to address, but opening to get feedback on the approach so far.

ping @titanous 
No need to specify the name of the receiver if you don't use it so `(s ClientSuite)` can become `(ClientSuite)`.