Always link to the current documentation URL.

We've always had to manually update the various URLs to the user manual,
and we've never been very consistent about doing that. However, this is
pretty easy to compute, so there's not much reason for us to have to
change anything.

There's now a new get_manual_url() function that's used to populate the
URL for the web UI and for rb-site. This will use a versioned manual if
it's a released build tagged 'final', or the 'dev' manual otherwise.

Reviewed at https://reviews.reviewboard.org/r/5854/
Escape '_' in all parts of a string when escaping for Markdown.

While our Markdown formatting through marked.js technically allows '_'
to be unescaped in the middle of words without problems, it breaks
down in practice. There are bugs in marked.js that can cause '_' in
different parts of a string to be turend into emphasis.

Until that's fixed, or we move to server-side Markdown rendering, we'll
need to disable the escaping of '_' within words in order to prevent
these problems.

Reviewed at https://reviews.reviewboard.org/r/5857/
Use "pre"-mode whitespace rules for <p> tags in Markdown.

Free-form text (<p> tags) are now set to not strip whitespace, causing
them to act just like a <pre> tag. This allows things like indentation
to remain (which Review Bot currently sets).

This is how it used to be, but that was changed in one of the betas to
work around some issues. However, that change was made to *all*
elements, and I don't believe the original issue was with paragraph
text.

Reviewed at https://reviews.reviewboard.org/r/5858/
Merge branch 'release-2.0.x'
Require Django Evolution 0.7.1 or higher.

This release fixes issues that some users encountered when upgrading
from old Review Board databases on MySQL.
Merge branch 'release-2.0.x'
Split up parts of defs.less and common.less.

This is the first step in cleaning up our CSS rules, with the aim of
bringing some consistency, organization, and to make some rules more
reusable for extensions.

defs.less's mixins have been moved out into a set of files in mixins/.
defs.less pulls those in, meaning that any existing consumer of
defs.less will continue to work.

common.less has too much junk in it. Some of the things in there are
reusable UI components, like boxes, buttons, and banners. Those three
have been pulled out into files in a ui/ directory.

My goal is to get all the styles into consistent places over the next
few changes, and then begin to standardize some of the naming, hopefully
coming up with a standard set of classes that we can document and reuse
in extensions.

Reviewed at https://reviews.reviewboard.org/r/5859/
Remove CSS files we no longer use.

We have some cruft in our css directory. In particular, docs.css and
iphone.css, neither of which have been used for a very, very long time.
This change just gets rid of them.

Reviewed at https://reviews.reviewboard.org/r/5860/
Merge branch 'release-2.0.x'
Move several stylesheets into pages/.

This takes a bunch of the stylesheets we have in rb/css/ and sticks
them into rb/css/pages/, getting them out of the root directory.

Not every one of these is fully page-specific, but it's at least a bit
closer to organized. We may want to split this later into more specific
files.

Reviewed at https://reviews.reviewboard.org/r/5861/
Move more CSS files into new directories.

This moves a few more CSS files out of the root and into organized
directories.

The DnD uploader component's stylesheet has been moved into ui/.

The retina mixin has been moved into mixins/.

The icon definitions have been moved into assets/.

Reviewed at https://reviews.reviewboard.org/r/5862/
Add new stylesheets for base page and form rules.

The base rules that comprise every page (standard tag styling, header
bar, branding area, etc.) are now split out from common.less into
pages/base.less.

A ui/forms.less has been started with some of the standard form styling.

While tearing parts out of common.less, I found two rules,
`.new-review-request` and `#searchbar`, which were no longer used. The
former was orphaned when RB 2.0's New Review Request page was written,
and the latter was orphaned with the UI rewrite for RB 1.7.

Reviewed at https://reviews.reviewboard.org/r/5864/
Return an informative error message when a review is posted with a duplicate commit id.

The reproduction steps described in bug 3328 could not be reproduced. When
following the steps, I would receive a HTTP 500 error when making the second
post. This is a result of Django not being used previously to validate the
data. Instead it was being left to the database, which is checked and handled
differently depending on which database is used and it's configuration. To fix
this creation was changed to instantiation to prevent partial saving, a
validation step was added prior to saving, a new webapi error was added, and
the error code was documented in the manual.

Testing Done:
I tested to ensure when making the second rbt post that the error was caught
and an informative error message was displayed, rather than an HTTP 500 error.
I also checked after the failure to ensure that a partial review object was not
created. I also tested to ensure that posts could still be created if they had
a unique commit id.

Bugs closed: 3329

Reviewed at https://reviews.reviewboard.org/r/5815/
Merge branch 'release-2.0.x'