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 
`Repo` should probably go in a different package? The `Client` is for downloading, and it looks like `Repo` is for generating/working with a repository.