We shouldn't assume encoding is platform encoding, but instead use UTF-8 explicitly like we did above.

Also, this commit list doesn't change between steps, unless we modify it.  Ideally we would keep the list as an instance member and flush it to the "git-rebase-todo" file only when call() is complete and the rebase is *not* successful.  That way we aren't updating the file on each commit, but instead are updating only once when we are returning control to the caller.