Add ticket-based authentication for perforce.

People running perforce these days are encouraged to use ticket-based
authentication, which dramatically improves security (it actually forces users
to authenticate, and uses per-host tickets that can be expired).

We've been putting this off for a long time, and it turns out that it's not so
bad these days. I was mostly worried because our PerforceClient used p4api for
most tasks but manually invoked 'p4 print' to actually get the file contents,
which meant that we'd have to have two different login implementations. Some
testing reveals that since perforce revamped the python bindings, they fixed it
so run_print actually returns usable data.

Whether we want to use ticket-based authentication gets stored into the
extra_data dictionary, so we don't have to have any migrations.

Testing done:
Verified that the field was shown and hidden at the right times, and that data
was correctly persisted into the database.

Set up a local perforce server that required password authentication. Verified
that diffs still displayed correctly (to test the run_print() change).

Set the "security" setting to "3" on the server, which enforces ticket
authentication, and verified that local p4 clients all required ticket
authentication. Set use_ticket_auth in the admin UI and cleared my cache, then
reloaded the diff successfully.

Fixes bug 1623.
Reviewed at http://reviews.reviewboard.org/r/3850/
Provide a Admin UI setting to change Log Levels

Allow Logging level to be setup in Admin UI

Currently, the logging level can only be setup only in settings_local.py which
makes it difficult to change the value.

Added a new field called logging_level in Admin->Logging that allows the user to
select a log level. Grouped the field under the general "Logging Settings".

This patch goes along with the Djblets change at #3851
(http://reviews.reviewboard.org/r/3851/)

Testing done:
Verified in fresh setup (devserver) where it defaults to the DEBUG level.  Since
this only gets stored in siteconfig_siteconfiguration table, shouldn't need any
migration changes. Changed the level manually in the UI and verified that DEBUG
messages dont appear anymore.

Also the Filter in Admin->Server Log shows only the LogLevel selected and
anything above it. For e.g. if the logging is set to ERROR, the filters in
Server Log only show Error, Critical and ALL.

Fixes bug 1859.
Reviewed at http://reviews.reviewboard.org/r/3852/
FedoraHosted: Correct the URL for plain files

The URL was not pointing to the raw files, but instead to an HTML representation
of them. With this patch, they correctly point to the raw files.

Testing done:
Created a new FedoraHosted repository and verified that patches could be
applied.

Fixes bug 2897.
Reviewed at http://reviews.reviewboard.org/r/3853/
Merge branch 'release-1.6.x' into release-1.7.x
Merge branch 'release-1.7.x'
Updated FedoraHosted unit test

FedoraHosted unit tests were failing off a clean pull from Github, due to the
previous change from Stephen Gallagher. Changed the path being tested to match
the new URL.

Testing done: Ran the test suite.

Reviewed at http://reviews.reviewboard.org/r/3857/
Merge branch 'release-1.6.x' into release-1.7.x
Merge branch 'release-1.7.x'
Fix the media upload manual update page to not point to the old wiki.

The manual update page for the media upload directory was pointing to an
old, non-existent wiki page. It's now just referencing the above
instructions.
Refactor manage.py to be more easily callable by wrappers.

This fixes up manage.py so it can be called with a custom settings file
by a wrapper (such as another manage.py script). There's now a 'main'
function that takes a settings module and operates on that, instead of
assuming it's using the 'settings' module from reviewboard.settings. By
default, of course, this is reviewboard.settings.

This is used by RBCommons to reduce code duplication, since we want the
same logic, but a different settings.
Merge branch 'release-1.7.x'