Introduce a core type id macro collection and change all nodes to use it
Make Expression::type return an error type expression as opposed to null
Unify the type id mechanisms of Node, Item, and Shape

The newly introduced Reflect and typeIdMacros in Core are used for
everything.
Fix an incorrect type id initialization for items
First sceleton for most of the classes, basic item wrapper for only
items or only nodes is working
All three kinds of item wrappers are working.
Adjust the size of the items correctly.
Finished implementing item wrapper, implemented basic grid layout
Re-implemented the continue statement using an item wrapper.
Generalized from specifying a style in the item wrapper with node and
visualization, to a style getter
Re-implemented return statement
Introduced horizontal and vertical spacing in grid layout.
Child items of DeclarativeItem are properly destroyed.

This happens recursively over the DeclarativeItem's elements/forms.
Builder pattern allows chaining of methods used at initialization.
addElement is a much more descriptive name than add (GridLayoutElement)
Add horizontal and vertical alignment specification to GridLayoutElement
Add row and column span, as well as stretch factors to the grid layout

The new properties are not used yet.
Syntax of addElement of GridLayoutElement is consistent with syntax for
calling addItem of QGridLayout.
Private variables of GridLayoutElement have better names.
It is now possible to modify the stretch factors.
Use stretch factors, no merged cells, use additionally available space
Handle merged cells properly.