Commit Domain Object

Create a `GitStatistics::Commit` object for more domain oriented design.

- [x] Create `GitStatistics::Commit` object
- [x] It should should know if it is a merge
- [ ] It should know all additions and deletions
- [ ] It should know renames, deletes, and new files.
- [ ] It should know how to get file blobs in the current repo tree.
- [ ] It should delegate language specific statistics to another object