feature(CommandStack): add #canUndo(), #canRedo() to public API
feat(drop): add visual indication for dropping

Note: Rule Service was refactored so that components can create their own 'can' implementation.

related bpmn-io/bpmn-js#127
refactoring(rules): move rules from modeling to rules service

See #127
feature(modeling): add array based move commands

- add moveShape()
- add moveConnection()

see bpmn-io/bpmn-js#127
feature(drop): add drop to MoveShapeHandler

TODOs
=====

- The connection remove algorithm is implementation specific and must be refactored and moved to bpmn-js
- Modelers need a way to intercept the move and extend it with custom actions
- Modeler issue shapes can't moved back to 'root'

related:  bpmn-io/bpmn-js#127
feature(drop): diagram implementations can now register handlers to modify the drop behavior
feature(drop): use register pattern for diagram specific rules.

see bpmn-io/bpmn-js#127
fix(testcase): test was skipped due to incorrect syntax
refactoring: separate shapes.move and shapes.move and use shape.move as an internal event while
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