Refactor output of commands

The commands have been refactored to use consistent output
conventions. Any debugging information or non-critical errors should
use the logging module (logging.debug(), logging.error(), etc.). Any
critical errors that halt execution should raise a CommandError
exception which will be printed (A stack trace will be printed if
debugging is turned on). Any normal output directed at the user should
be printed as usual.

The clients have yet to be refactored to follow these conventions,
which will happen in a future change.

Also, The base command class now defines a global option list which is
used in addition to the command's option_list. The '[-d | --debug]'
option has been refactored to be a global option.

Reviewed at http://reviews.reviewboard.org/r/3847/