Improve the look and feel of extension configuration.

Extension configuration did a lot of the same work that siteconfig did,
but worse.

It didn't fit in with the rest of the templates at all, making it stand
out noticeably.

It was lacking features from siteconfig's SiteSettingsForm, such as save
blacklists and fieldsets, requiring the extension author to work around it.

It also didn't have any notification of when settings were saved. It
looked like clicking Save did nothing. What's worse is that hitting
reload on the page would prompt to resubmit the form data, since we
didn't redirect.

Extensions now reuse all the siteconfig code for this. An extension's
Settings object conforms to the siteconfig API for setting/getting data,
and all the templates and form code is mostly siteconfig code.

Now, configuration fits in with the rest of the UI, and isn't so buggy.