Organize the rbt post --help output.

rbt post has a lot of options, and it was hard to figure out which
options were intended to serve which purposes, unless you knew what you
were looking for.

This organizes all the options into groups. To do this, I've implemented
a custom OptionGroup class that just wraps optparse's OptionGroup.
Commands can use this to group instances of our Option class under a
name and optional description.

The options are divided into the following groups:

* Posting Options
* Review Board Server Options
* Repository Options
* Review Request Field Options
* Diff Generation Options
* Git Options
* Perforce Options
* Subversion Options
Don't use _convert_symbolic_revision with 'BASE'

In the case that the BASE revision is not present on the current working
directory (such as when the latest synced change is on a branch, and cwd is
trunk), trying to convert the BASE symbol to a numbered revision will fail.

This change just passes through the string 'BASE' as the base revision, which
should be both more efficient and cover all the possible situations.

Fixes bug 3250.