feat(move): implement containment change (drag and drop)

Implements basic drop rules and drop interaction (during move).

Creates a new command shapes.move that is used to move a number of shapes (and the connected connections).

Related bpmn-io/bpmn-js#127
chore(draw): remove unneccessary check
chore(project): clean up dead code
fix(move): disable pointer events on dragged shapes
chore(test): use fixed test container height
chore(change-support): unify detection

Components that react on shape/connection changes only and are not
interested in behind the scenes action should always listen to the
shape.changed / connection.changed events that are fired whenever an
element got updated.

This should become the general pattern across all gui enhancing
components.
feat(rules): unify rules

This commit unifies the way we query and validate modeling rules across
diagram-js.

Rules are directly integrated into the CommandStack and may be queried
via CommandStack#canExecute(action, context). This is the direct peer of
CommandStack#execute(action, context) and should alwas accept a
similar action context.

Various components may query the CommandStack or access the rules via
Rules#allowed(action, context) (having a sligtly more speaking
interface).

To integrate into checking rules components must listen to commandStack
specific rule check events (commandStack.{ action }.canExecute).

A helper that provides the functionality is features/rules/RuleProvider.
It exposes rule checking via a simple interface
RuleProvider#addRule(action, checkFn).

Closes #55