rewrite api doc for FormWidget and FormValueWidget, fixes #18363

cc @AdrianVasiliu 

Hopefully this addresses all the points you brought up.  You can add some inline comments if you see places for further clarification.
Yes, clarifying that `valueNode` is the `<input>` would help. My point was that it's not obvious for the reader how widget.readOnly is handled; the doc just says it "provides handling for a readonly property", but doesn't say anything about how it handles it (the fact that the widget "transfers" it to the embedded `<input>`).