Refactor HTTP access out of HostingService class.

This change adds a new `HostingServiceClient` class which handles the basic
details of HTTP and JSON communication with hosting service APIs. This is
primarily just extracting the functionality out of the `HostingService` class.
Individual `HostingService`s can override this class to add additional checking
(such as GitHub's checking of rate limit headers), or add higher-level API
functionality.

Testing done:
* Ran unit tests.
* Tested post-commit review request creation.

Reviewed at https://reviews.reviewboard.org/r/5691/
Fix a bug where the body wasn't included in HTTP POSTs

This snuck in during some of the hostingsvcs refactoring. Trivial fix.
Don't use <br/> tags for newlines in Markdown text in e-mails.

We had the "nl2br" filter applied for Markdwon text, which caused every
newline to have a <br/>. However, these appeared inside a <pre/>, and we
still had newlines. The end result was that we had a blank line for
every line of text.

I can't see any reason why we'd need this filter, so I've removed it.
This results in proper-looking e-mails.

Reviewed at https://reviews.reviewboard.org/r/6286/
Fix URLs to users on Local Sites.

The URLs shown in the user infobox, in the Submitter field on a review
request, and in the target reviewers lists weren't correct on Local
Sites. We were using get_absolute_url, and need to instead use
local_site_reverse.

After this change, all URLs to users should be correct.

Reviewed at https://reviews.reviewboard.org/r/6289/
Fix the display of the floating review banners while scrolling.

The floating review draft banners had some issues when scrolling off the
edge of a review. Due to some imprecise calculations, the page would
appear to stutter for a brief moment while scrolling, as the banner
jumped back and forth between being docked to the page and floating over
the page.

To fix the stutter, we needed to set the placeholder to have the exact
height and margins of the original banner, pre-float. This kept the
container the same size. We also needed to fix some of the calculations
to not go in/out of float mode too soon.

With this fixed, the page no longer jumped, but the banner would just
disappear as we hit the edge of the review. Now, the banner will appear
to dock at the bottom of the review, and just scroll out of view as the
user scrolls further down.

The end result is a buttery-smooth scrolling experience.

Reviewed at https://reviews.reviewboard.org/r/6293/
Fix errors when resizing the review request page.

The resize layout scheduling code, which has been fixed a couple
different times, was still broken. Resizing would end up calling
_scheduleResizeLayout with the window as the context. We now include
this function in the bindAll() in order to ensure the context is set
correctly.

Reviewed at https://reviews.reviewboard.org/r/6294/
Fix showing Markdown field changes with 'None' values.

When rendering a Markdown field in a change description box, we weren't
ensuring that the old or new values were strings. They could be None,
which is a valid value indicating there was no content before. This
would end up breaking render_markdown().

We now convert to an empty string if it's None.

Fixes bug #3549
Reviewed at https://reviews.reviewboard.org/r/6290/
Fix 'interdiff-revision' field name in the diff context resource.

When I added this resource, I copied the field names that are used for POST/PUT
operations (which use underscores), rather than those in GET operations (which
use hyphens). This worked from the web UI (where we assemble the URL directly),
but caused problems when using the RBTools API (which transforms all
underscores into hyphens for GET requests). This change fixes that field name
to be 'interdiff-revision'.

Testing done:
Verified that diff and interdiff selection still worked properly using the new
URL parameters.

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