Add a hook for extensions to register administration widgets.

This introduces AdminWidgetHook, a new hook that extensions can use to register
new widgets for the administration UI. Once the extension is enabled, the widget
registered by the hook will be available for administrators to add to their
dashboard. Widgets will also be removed when the extension is disabled.

Testing Done:

Unit tests have been written to make sure the AdminWidgetHook properly
registers and unregisters widgets. A third unit test checks that the Widget
subclass being registered ends up in primary_widgets list, when primary is set
to True in the hook initalization.

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