Improvements on state handling and code structure of spinner widget

I know this is never going to be accepted, but I'm still submitting the changes we are running with the local integration because your spinner was seriously broken. Below a summary of changes, I'd like to hear your comments and obviously see my patch integrated.

detailed changes:
- _getCreateOptions() now initializes 'disabled', moved before _create()
- in _create(), _draw must be invoked before this._value()
- added in _events() handlers for hover and focus states
- added widget() overridden function, should work as expected if i understood correctly the original idea of widget() method
- fixed disabled handling, correctly disables the widget