Blame Canada

Add a revwalk-based blame API that does most of what `git blame` can do.

- [x] Initial API proposal
- [ ] :fire::fire::fire::fire:
- [ ] trivial blame
- [ ] `git blame -M`
- [ ] `git blame -C`
- [ ] `git blame -CC`
- [ ] `git blame -CCC`
- [ ] :ship: