A little cleanup and additional commenting in the BF_Lang class.
Refactor the Base_Controller and Authenticated_Controller to allow for the BC to check if authentication is needed and then run the authentication process. This allows the user's chosen language to be used reliably throughout the application.

I believe this fixes the issues mentioned in #984 and #956, though it does display a few other places where the language support is lagging, like the menus....