Add debugging and a script for issue count calculation.

There have been some reports of issue counts failing to calculate
correctly. The cause is not obvious, so we need better debugging.

This adds some debug logging to show all the calculation state for a
given review request's issues, which users can send us when they
encounter problems.

It also adds a reset-issue-counts management command, which will reset
issue counts for particular review requests, or all review requests if
passing --all.

Reviewed at https://reviews.reviewboard.org/r/6366/
Add help output for the rb-site manage command.

This includes some basic help output for rb-site's 'manage' command that
explains how to get the list of commands and execute them.

Reviewed at https://reviews.reviewboard.org/r/6367/
Add release notes for Review Board 2.0.8.

This covers all the fixes made since 2.0.7, and adds several new
contributors to the AUTHORS list.
Update the minimum versions of our dependencies.

This adds minimum versions of Haystack and Whoosh, in order to resolve
some version issues. It also updates the minimum versions of Djblets and
Django Evolution.
Release Review Board 2.0.8.
Bump to 2.0.9 dev.
Fix an issue in the 2.0.8 release notes with the rb-site usage.

The rb-site usage instructions listed in the 2.0.8 release notes were
ommitting a couple of key things: the 'manage' command, and the '--'
before flags. This has been fixed.
Fix one more case of a bad rb-site command in the release notes.

My previous change only fixed one case. This fixes the other.
Fix the help output for the rb-site manage command.

The help output was swapping 'manage' and the path. This fixes it to be
in the correct order.
Connect widget signals during RB initialization instead of module load.

reviewboard/admin/__init__.py was connecting to save/delete signals for
Repository and Group in order to invalidate widget caches, in order to
keep the dashboard up-to-date. However, doing it during module load
resulted in some circular import issues, which manifested in various
ways over time, but are now impacting the docs generation.

Now, the signal connections and invalidation live solely in widgets.py,
in an init_widgets() function.

The top-level reviewboard.admin module listens for Review Board's
'initializing' signal and, when called, it invokes the init_widgets().

This allows us to build docs again, and should resolve some of the other
cases we've seen over time.

Reviewed at https://reviews.reviewboard.org/r/6370/
Prevent users from publishing empty (no modifications made) review request drafts.

When a user submits an empty draft for a review request a warning is issued to
let them know they did not make any modifications.

The general flow is:
1. In the review_request_draft model determine if there were any changes to any
   of the fields, if not then raise a 'Not Modified' exception.
2. The review_request_draft controller/resource will catch the 'Not Modified'
   exception and return an appropriate error message to the Client JS to
   display a meaningful message to the user.
3. Client JS displays error message and the 'Publish Changes' and 'Discard
   Draft' buttons re-enable.

Testing done:
Tried "not-modifying" the Description, and Testing Done fields to determine the
output.

Wrote test case to publish an empty draft (test case passes).

Postive Test Cases:
* Added a file (successful publish).
* Remove a file (successful publish).
* Changing the description field (successful publish).
* Add comments (successful publish).
* Add branch/target people/bug number.

Fixes bug 3452.

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