Different error conditions for different errors, also added error class enum.
Make-commit now returns a commit object.
Added make-tag function and associated test.