Commands now return true/false to determine success

This gets rid of coupling to $?.exitstatus for aborting if a sub-command
failed. To implement this, shell commands are now run using system instead of
Kernel#`, since system returns true/false based on the exit status of the
executed command. This means that gem-release works more like a bash script
using 'set -e' (exit on error), instead of blindly continuing in the face of
error.