Allow changing of language preference from profile page

This adds profile API functions for handling the fetching and updating of user preferences, a language selection form to the profile page, new JS to process the form's submission, and modifies the profile views to handle this new functionality. Also includes a handful of small tweaks to make things more consistent.

@wedaly and @stephensanchez, could you review this?
I see, thanks for the link. It looks like the example Google-style docstrings I was referring to don't use `Keyword Arguments`. I prefer the Google style - placing all arguments in `Args` and marking those which are optional as such - but I'll defer to you on this one. If we want a separate section for keyword arguments, maybe we should use `Keyword Args`, to be consistent with our use of `Args`.