Improve the Markdown escaping logic.

This improves our Markdown escaping to better handle parens,
underscores, and asterisks.

The common cases of showing function names with parens and underscores
should no longer result in a bunch of escaping. We now do a better job
of escaping only when they're going to cause formatting changes.

Since some of the regexes were getting a bit longer, I've also
repositioned the comments in the regexes to appear before the regex
lines.
Rewrite the My Account page.

This is an extensive rewrite of the page that provides better
organization and extensibility, based on the equivalent page in
RBCommons.

The new page provides a navbar on the side for navigating the various
account preference "pages," which are shown in the main content area.
Each "page" can show one or more forms for changing preferences.

The biggest change in content is the Groups page. Instead of a terrible
flat list of checkboxes, we now display every group in a clean list,
with buttons for dynamically joining or leaving the group. The group is
also filterable, making it easy to find a group you want.

The whole infrastructure is designed to be extensible. While the hooks
aren't there yet, everything below them are. Pages can be registered or
unregistered, and the forms on a page can also be registered or
unregistered. This will later let extensions provide their own
preferences for each user.