Add a UserPageSidebarHook for adding links to user pages

This patch adds support for adding extensions in UserPage and works very
similar to the DashboardHook. It takes a dictionary of label, url and an
optional subitems -- which itself can be an array of (label,url) -- to add
custom links in the /users/<username> page.

Also updated the documentation page to indicate the usage of this. Im not sure
how to build the doc page into html, so the formatting hasnt been checked for
the new documentation.

I added support for this hook so that people wanting to build user-specific
reports can use this. For e.g. reports like review-requests assigned to me, or
a users' RSS feed can all be linked directly from a user page.

Testing done:
- Ran all existing tests.
- Added a new test for the UserPageHook.
- Added a new test extension that demonstrates the use of this (Screenshot
  attached).
- Tested without extension to ensure no other breakage.

Reviewed at https://reviews.reviewboard.org/r/3875/
Refactor logic out of UploadDiffForm

All of the logic for taking a diff file and creating a DiffSet was in
UploadDiffForm. This change moves it out into a manager, so that I'll be able to
use the same code for creating DiffSets from diff data fetched from an upstream
repository.

Testing done: ran unit tests.
Reviewed at http://reviews.reviewboard.org/r/4231/
Merge branch 'release-1.7.x'