FormValueWidget: don't fire change event unless user actually changes the value.

This is for the corner case when the user (for example) drags the slider handle
but drags it back to its original position before mouseup.

This handles the case when the widget value was set programatically sometime after
startup(), and also the case when the value is computed asynchronously after the startup()
call.

Also moved the genHandler() function to the top, just because I like defining functions
before using them.

Refs ibm-js/deliteful#199, refs #223, fixes #246.
fix jshint errors, refs #246.
Standardize which properties CustomElement.observe() reports.
Refs ibm-js/decor#17, ibm-js/decor#22.