Changed visibility of various methods and instance variables.

A lot of them used to be private. They're now protected or public.

Includes some code style improvements.
Always save user config on demand, even if there are no settings to save

This means a user config file will always be there, even if (for some
reason) all settings get unset.