All: Classes Option

This replaces PR #790 It updates the widget factory to handle the classes option via setOption, and updates all the widgets to use the `_elementsFromClassKey` method to set what elements belong to what classkeys for programmatic updating. It also updates all classes options to use `""` instead of `null` to make it easier to concant new classes. 
This should be dropped (also for tooltip and where ever else its used). The check in `dialog.js` et al needs to explicitly check for `if ( $.uiBackCompat !== false ) {`.

In other words, an undefined `$.uiBackCompat` is the same as `true`, only `false` disables the back compat layer.

May need to do the same update in the button branch.