Split up --repository-url and REPOSITORY into new options/settings.

--repository-url and REPOSITORY had both previously allowed either a
path to be specified, or a repository name. We'd try for the name when
looking up a repository, but would try for the path in different ways
within the SCMClients. In the case of Subversion, this broke pretty
badly when using a repository name.

Now --repository-url has been split into --repository-url and
--repository, while REPOSITORY has been split into REPOSITORY_URL and
REPOSITORY.

The URL-based ones work as they previously did, while the non-URL ones
are used for repository name-based lookups only.

This will require that people update their scripts or .reviewboardrc
files if passing the old values for the settings, but in the long-run,
it should avoid a lot of problems.
Add support for posting with Markdown-formatted commit messages.

This adds a new option `--markdown` option to `rbt post` which prevents
escaping of content within the commit message for the description. This
prevents the need to unescape the description before publishing if the
commit message is considered Markdown-safe, or if it's otherwise
Markdown-formatted.

There's also a `MARKDOWN` option for `.reviewboardrc` that can be set to
enable this by default.

This only works for Review Board 2.0+. For now, it may cause an error
when using it with older versions. We'll likely want to introduce a
capability and make use of it.
Change 'rbt diff' and 'rbt post' to take revisions as arguments.

This change updates the 'diff' and 'post' commands to treat extra arguments as
the revision spec, and adds a new -I/--include flag to specify any files to
limit the diff to.

This is done for all SCMs except ClearCase. I need to work through all the
pending ClearCase patches and read through the proposal on how to fit it into
this new world order.

This also includes some changes to the way that changenums are pulled out for
perforce and plastic. Ideally I'd like to get rid of the server-side
summary/description fetch and implement the --guess-* options, but that would
likely piss off a lot of users. Instead, I've just moved the changenum
extraction into the diff methods, so that we don't duplicate the work of
parsing revisions in two different ways. This also returns 'None' for submitted
changelists (for now) because the server-side code is broken at the moment.

Whether or not files are supported is currently client-dependent. Most already
did, and I've added it for git. It's still not done for Plastic, since my
Plastic expertise is exactly zero.

Testing done:
* Ran unit tests
* Checked diffs and extracted summaries for:
  * bzr backend with zero, one, and two-arg forms.
  * cvs backend with zero arguments. I haven't tested the two-arg form because
    after trying four different public CVS repos, I have yet to find one that
    (a) has a CVSROOT, (b) allows me to check it out, (c) allows me to do a
    diff between two tags, and (d) have that diff not contain broken text
    encodings.
  * hg backend with zero, one, and two-arg forms.
  * hgsubversion backend with zero, one, and two-arg forms.
  * git backend with zero, one, and two-arg forms.
  * git-p4 backend with zero, one, and two-arg forms.
  * git-svn backend with zero, one, and two-arg forms.
  * perforce backend with zero, one, and two-arg forms, including submitted and
    shelved changesets.
  * svn backend with zero, one, and two-arg forms, including changelists.

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