Implement branch manipulation

Just a first pass at getting a `getReferences` function going; should be useful when closing out https://github.com/atom/status-bar/issues/4. 

Wanted to get what's here on your radar first, @kevinsawicki. Is using `std::set` ok, or can I manipulate the array better?

- [ ] Better error validation (long branch names, weird chars)
- [ ] Don't list remotes
- [ ] Support checkout
- [ ] Support `git checkout -b`

Could not have gotten as far as I did without stumbling onto a post by @ben: http://ben.straub.cc/2013/06/03/refs-tags-and-branching/. Thanks man!