Implement initial API

My thought is that we can occasionally merge this branch to master, but keep it around until we're happy with the API (at least the initial version, able to view repos, files, and notes/comments).

I based this off the highlighting branch, so the first commit should go away once the other pull request is merged.