Improve repo commit method

Previously, when the `repo.commit()` method failed, we hit an exception caused by line 422.  This PR ensures that we check the `err` value first (and triggers the callback appropriately).

Also, the `author` object now contains the expected `name` and `email` fields.