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?
The Napoleon [style guide](http://sphinxcontrib-napoleon.readthedocs.org/en/latest/example_google.html) doesn't include a `Keyword Arguments` section, instead indicating that keyword arguments should appear under `Args` and be marked as `optional`.