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 
Currently these methods get called once, the resulting data modified and signed, then passed back to the local store to stage the change, so there seems no need to memoize