convert: return empty set for non-string-convertible types
move property path parsing from 'form' to 'bind'
move utils
nitpick
nitpick
nitpick
nitpick
Split the various node types, also split data from processing.

Split data out of Binders into Nodes. Binders do the processing and build
immutable Nodes.

ElementRef is replaced by AnyNode / NullNode.

Split FormNode into UntypedNode, TypedNode, FormNode.

UntypedNode is immutable.

TypedNode is immutable.

FormNode is immutable except for the info/error messages.

The processing goes like:

MultiMap<String, String> -> MultiMap<ParsePath, String>
-> UntypedNode -> TypedNode -> FormNode