Fix a typo.
Merge branch 'release-2.0.x'
Make code line numbers work as links

I added two functions to the file, one adds the links to the code line numbers
and the another one removes the link when the code line number isn't hovered.
The link is combined from the file id and the line number, which should be
enough to identify the row, which should be highlighted. The link is removed
from the th element, when user hovers on another row.

Testing Done:
Testing is done on my development server.

Reviewed at https://reviews.reviewboard.org/r/5576/
Jump to and highlight anchors in the diffviewer URL hash.

When people are passing around links to specific lines in the diff viewer, it
helps to be able to see what that link is referring to. This change adds some
highlighting to the given row, and some logic to add in the anchor if it's not
present, since the templates only add anchors for lines that have comments on
them.

Testing Done:
Testing done on my development server locally, works fine there

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

This snuck in during some of the hostingsvcs refactoring. Trivial fix.
Fix extension sandbox tests on master.

The master branch used `extension.id` instead of `extension.metadata['Name']`
for some of the logged messages when extensions threw exceptions. This failed
with the `SandboxExtension` used in the unit tests, since the id is assigned by
`ExtensionManager.load()`, and only for extensions with entry points.

I've manually assigned an extension ID to the `SandboxExtension`, and updated
the other sandbox log messages to be consistent.

Testing done: Ran unit tests.

Reviewed at https://reviews.reviewboard.org/r/5791/
Improve use of groups with the GitLab API.

The GitLab API is totally broken with pagination, but if users have a large
number of repositories which are separated into groups, we can do a better job.

This change is based on John Earl's code at /r/5789/, but I've made some
changes to keep things a bit more concise, added a separate error for when the
group name is incorrect, and added and fixed unit tests for everything.

Testing done:
* The original change listed that the groups iteration code was tested against
  a large GitLab installation in both the devserver and production.
* Ran unit tests.

Reviewed at https://reviews.reviewboard.org/r/5792/
Switch to ldap.initialize() for AD backend.

The AD backend was still using the deprecated ldap.open() call. This is a
trivial change which switches it over to using ldap.initialize(), which just
takes a URI instead of host/port parameters.
Avoid showing change of password form if the auth backend doesn't support it.

If an authentication backend has supports_change_password set to False, the
account preferences panel still shows the form to change the password, while it
shouldn't be there.

The problem here is that the is_visible() implementation was located in the
wrong class. Instead of being in ChangePasswordForm, it ended up in
AccountSettingsForm, so that if the auth backend didn't have the ability to
change the password, it would instead prevent the user from changing their
timezone.

Testing Done:

Before: If you use a backend that has supports_change_password as False, your
/account/preferences page still has Authentication tab, which corresponds to
password changing. If you try to change your password, you get an error as
described in the bug. You can also notice that the settings bar went missing
for some reason.

After: If supports_change_password is False for your backend, the
Authentication tab isn't visible, and the Settings tab is back!

I also verified that nothing changed for backends that support password change.

Bugs closed: 3255

Reviewed at https://reviews.reviewboard.org/r/5797/
Merge branch 'release-2.0.x'
Allow users to add and remove widgets from the admin dashboard.

This is the second half of adding configurability to the admin dashboard. Users
can add widgets to their admin dashboard by clicking on "Add Widgets", which
will open a modal displaying a list of widgets that they can choose from. They
can remove widgets by clicking the X icon on the upper righthand corner of the
widget in question.

Testing Done:
Removed widgets and added them back to make sure that newly added widgets
appeared below the old widgets.

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