Add String#to_utf8, which converts receiver to valid UTF-8, replacing invalid chars with '?' as necessary.

gh-292
Separate some processing in #log.
Employ String#to_utf8 in LogHelpers to handle bad encodings.

gh-292
Merge branch 'utf-8'
Add coding for the utf-8 literals in the String#to_utf8 specs.
Skip String#to_utf8 (and its specs) on ruby-1.8.
Merge branch 'utf-8' again: support ruby < 2.0.
Naively accept splatted & array sudo commands.

This implementation won't handle spaces or quotes, or anything else that has to be escaped for the shell, but it gets the first set of specs in.
Join and escape splatted and array sudo commands properly.
Spec GitRepo#repo_shell.
Spec and document GitRepo#repo_shell?.
Add #run_as_owner? boolean option to GitRepo.
Add GitRepo#repo_shell_as_owner, to shell out as the repo's owner.
Use GitRepo#repo_shell_as_owner for the destructive GitRepo methods.
Commit to the gitfs repo as the repo owner.
Whitespace.
Merge branch 'sudo-splat'
Merge branch 'git-repo-sudo'
Merge branch 'git-fs-sudo'
Add the gitfs files as the owner, as well as committing as them.