Update the GitRepo().commit() method

- Add the possibility to specify on which branch the commit should be
done
- Handle the situation where there are not commits in the repo and we're
trying to do the first one (in which case self.repository.head.name
fails and there is no parent to rely on)
Add a couple of exception classes that can be raised when merging
Add GitRepo().merge() to merge a specified commit into a specified branch
Add unit-tests for the GitRepo().merge() method
Fix the prefix of the temp folders used for the tests