Preferences refactor. Fix tons of things that have been annoying me for years.

* Add DlgPreferencePage and make all preference dialogs inherit from it (this
  standardizes the slots slotUpdate, slotApply, slotShow, and slotHide).
* Get rid of all controller-related code in DlgPreferences.
* Get rid of code duplication / inconsistency in setting up preference pages in
  DlgPreferences.
* Minor style fascism.
Only show the "no controllers" message if there are no controllers.
Fix minor issue where the 'Sound Hardware' section is not selected when you open the preferences window.