Adds BlockTypeChange control.
Adds changable blocks.

Blocks have a changeable array that defines into which types of blocks
these blocks can be changed. This is respected in UI elements, but has
no functionality yet.
Provides proper callbacks for type change.
Adds the actual type change code.
Merge branch 'feature/block-transform'