feature: commit changes to repository

- [x] implementation of the commit operation -> commits contents of the index to the repository
- [re-planned] implementation to amend a commit
- [x] Spice it up with some tests