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 
I have assumed that users create a key with the intention of it being a required key for committing, but this may be a wrong assumption.