Improve guess support in rbt post.

This adds new abilities to rbt post's guess fields support. The old
guess support was a boolean state, which only supported opt-in and not
opt-out. That is, if GUESS_FIELDS was set to True in .reviewboardrc, it
couldn't be turned off when posting.

It's now a tri-state of "yes", "no", and "auto", which can be set on the
command line or .reviewboardrc.

If "yes", it behaves as before, with the fields being updated from the
commit message.

If "no", guessing will be turned off (which allows the command line to
override the config file).

If "auto", guessing will be turned on only for new review requests, but
turned off when updating.

If no --guess-* options or configuration variables are set, the
default will be "auto", making for a nicer experience when posting brand
new review requests.

If an old-style --guess-* option is passed without a value (in the form
of --guess-*=value or -gvalue), then the prior logic of forcing guessing
will be used. That is, "yes" is implied.

While "yes", "no", and "auto" are all valid values, we still support
True and False in .reviewboardrc, for backwards-compatibility.
Improve logging for RBTools.

The API/command rewrite in 0.5 regressed our log output, making it a bit
harder to gather useful debug information and to nicely show logging of
various levels.

Upon starting, we log a bunch of debug information, in order to help
with support requests. This matches what post-review used to show.

We now format different log levels in different ways.

Debug messages once again have a ">>>" prefix to help distinguish them
from other output.

Info messages are shown just like print statements, with no prefixes.

Warning and higher are in the form of "LEVEL: message". This is a lot
nicer to look at when there's an error, since we now show
"ERROR: <blah>" instead of "ERROR:root:<blah>".

The resulting logging looks like:

>>> This is debug
This is info
WARNING: This is warning
ERROR: This is error
CRITICAL: This is critical
Switch to using argparse for argument parsing.

argparse is the successor to optparse, and has a lot of nice additions
we may want to take advantage of. It knows how to do things like
optional values to arguments flags, variable argument values, and
"positional arguments" (such as a command name), reducing the amount of
work we have to do.

The two are pretty compatible, allowing for most of the porting effort
to remain under the hood. New commands can certainly take advantage of
the new support though.

We still maintain our own Option and OptionGroup wrappers, which we
still need in order to map to configuration keys.

argparse is natively available on Python 2.7 or higher. For older
versions, we depend on the 'argparse' package from PyPI, which provides
compatibility with Python 2.7's argparse.
Add some logging when check_install fails.

Right now, if the command-line tools aren't available in the path, rbtools will
just skip that backend silently. This change adds some debug logging that
indicates which backends are skipped due to missing dependencies.

Testing done: Ran unit tests.

Fixes bug 3187.

Reviewed at https://reviews.reviewboard.org/r/5625/