fix(util/IdGenerator): avoid collisions
feat(overlays): add overlay api

A service that provides an API that allows to add HTML overlays to the diagram.

Closes bpmn-io/bpmn-js#54
fix(Overlays): incorrect overlay positioning

Incorrect parameter was passed into function caused incorrect overlay positioning.
improve(Overlays): add simplified method for adding simple overlays

API: overlays.addOverlay(shape, {
    html: '<div></div>',
    css: { }
}
docs(overlays): improve docs
feat(core/EventBus): log and propagate event handler errors

This commit allows diagram components to listen for the 'error' event
whenever exceptions get thrown during event handling.
feat(core/EventBus): make #on accept multiple events
feat(draw/Renderer): make connections visible
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.
docs(Diagram): attach module
docs(model): attach module
feat(layout): add connection layout utility

Related to bpmn-io/bpmn-js#2
feat(features/modeling): add shape move and connection layout handlers

Related to bpmn-io/bpmn-js#2