rewrite api doc for FormWidget and FormValueWidget, fixes #329

cc @AdrianVasiliu 

Hopefully this addresses all the points you brought up.  You can add some inline comments if you see places for further clarification.
> That said, the doc of FormWidget.value starts with "Corresponds to the native HTML <input> element's attribute.", and this main sentence fits rather the case of the FormValueWidget subclass, isn't it? 

No, not really.  I think you are forgetting that a checkbox is also an `<input>`, specifically an `<input type=checkbox>` (and similarly for buttons).

> Maybe FormValueWidget could override the doc of the value property, such that there is a version which fits for each:
> * FormWidget.value: "the value is set programatically when the widget is created, and the end user merely changes the widget's state, i.e. the checked property to take the example of a checkbox widget."
> * FormValueWidget.value: "value can be set interactively by the end user (via mouse, keyboard, touch...)."

Since FormWidget is the base class form FormValueWidget, I don't want to **just** document FormWidget.value with the words "the end user merely changes the widget's state".   (Remember how you originally said that FormWidget's doc was confusing because it said that it was for widgets without user-settable values, but that it was the base class for FormValueWidget.)

However, I will update the FormWidget.value explanation like this, to make the usage clear for both classes:

```js
/**
 * Corresponds to the native HTML `<input>` element's attribute.
 *
 * For widgets that directly extend FormWidget (ex: checkboxes), the value is set programatically when the
 * widget is created, and the end user merely changes the widget's state, i.e. the `checked` property.
 *
 * For widgets that extend FormValueWidget, the end user can interactively change the `value` property via
 * mouse, keyboard, touch, etc.
 *
 * @member {string}
 */
```

Note though that anyone that understands HTML well will already understand this concept.