Make rcfiles printouts more consistent

"Successful" messages are generally printed prefixed with an =>, whereas
"failure" messages, while also being printed to STDERR, are simply
printed, with "fatal:" before, if a given command should fail
immediately after the command.
Make change-directory behavior more consistent

Since there was a lot of code-copying going on, there's now a sub to
handle changing the directory and behave consistently across the whole
script. While nothing yet uses it, it takes an optional argument, which
should be a true value of changing the directory is not necessarily a
fatal error.
Fix a minor case issue
Add "diff" and "save" commands to rcfiles

The two commands work together to make a simple workflow for saving
changes:

 * diff - Displays differences between the latest repository version and
   the working copy, including untracked files using a short script
   written by Jo Liss (@joliss)
 * save - Adds all current modifications and untracked files to a new
   commit. If the commit fails (typically from not providing a commit
   message), the index should revert. If the commit is successful, then
   the system will try to push the changes to the remote. If that step
   fails, the command will exit with an error status but it will not
   revert the commit.