feat(features/modeling): implement basic modeling handlers

This commit adds a number of basic modeling handlers

  * <shape.create> -> creates a new shape
  * <label.create> -> creates a new label
  * <connection.create> -> creates a new connection
  * <shape.appendShape> -> appends a new shape to an existing one

Implementors may reuse the module lib/features/modeling or role their own.

Closes #45
fix(core/ElementFactory): assign id unless present
feat(cmd/CommandStack): add (pre|post)Execute handlers

This commit adds the ability to define preExecute and postExecute
handlers to a command handler. These callbacks are invoked once the
actual command has been executed and may be used to further decorate an
element (or preprocess) it.

The handlers get the context passed.

Closes #44

BREAKING CHANGE:

* The commandStack allows only one command per type to be registered.
This is for simplicity reasons.