Use ChangeOps consistently throughout API
Avoid redundant implementations in dedicated Lexeme API endpoints and
ChangeOps used when executing request through wbeditentity.
Significant conceptual changes/additions include:
- defining a hierarchical structure of ChangeOp classes reflecting the hierarchical structure of lexeme and form data.
- defining a mechanism of "aggregating" edit summaries for edits built from "atomic" changes with their own dedicated summaries.
- defining a mechanism of validating the change request structure, including passing on validation errors "up" to parent nodes.
- creating a way to create "empty" form that could be filled in with data and added to the lexeme, thus getting the form ID defined, on the later stage.
Major parts of this patch have been created by Pablo Grass.
Also includes contributions from Jakob Warkotsch.