Add support for command aliases.

This change introduces support for aliases in RBTools, allowing
developers to create simple short-hand for more complex functions.

Aliases in RBTools functions very much like aliases in Git. They're
defined in the user's .reviewboardrc in an ALIASES map, like:

    ALIASES = {
        'post-this': 'post HEAD',
        'push': '!git push && rbt close $1',
    }

There are two forms of aliases: Aliases for other RBTools commands (as
in "post-this" above), and aliases for system commands ("push" above).
The former makes it easy to simplify common tasks performed with certain
parameters to RBTools commands. The latter allows for more versatile and
flexible commands that utilize the system shell.

Aliases allow for positional variable substitution, using $1, $2, etc.
A special $* variable represents all arguments passed to the alias.

RBTools will only attempt aliases if the command name wasn't already
found. This makes it impossible to override an RBTools command with an
alias. Alias names must be unique.

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