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,
regardless of whether or not browser natively supports Object.observe().

Also may inadvertently fix a bug with CustomElement#_getProps()
returning a list with duplicate entries.

Refs ibm-js/decor#17, ibm-js/decor#22, and depends on
ibm-js/decor@ae66259f04bf7e665c6666ce8ff78c058837b4ff.
architecture doc
document a11y and a11yclick
document BackgroundIframe
Container doc
CssState doc
documentation for FormWidget, FormValueWidget
HasDropDown doc
KeyNav doc
place and popup documentation
typematic doc
uacss doc
ViewPort doc
update custom elements 101
update index.md
update migration doc
doc for focus