[WIP][FEATURE] Coverage calculation for single condition nodes
[FEATURE] Analysis data mapper

The data mapper pattern brings storing/loading data to a central place,
freeing the rest of the code from this unnecessary clutter.
Merge branch 'master' into expression-coverage

Conflicts:
	Classes/AndreasWolf/DecisionCoverage/Console/RunTestsCommand.php
	Classes/AndreasWolf/DecisionCoverage/DynamicAnalysis/Debugger/ClientEventSubscriber.php
[FEATURE] Build coverage from command line

This currently only outputs the raw coverage object as a tree.
[FEATURE] Use UUIDs for nodes

The nodes were only numbered unique per file, which might easily
lead to conflicts when dealing with results for multiple files.
Therefore, we now use UUIDs instead which are unique for the whole
analysis.
[FEATURE] Syntax tree abstraction
[FEATURE] Expression classification

This creates a central place to help telling conditions, decisions, relations etc. apart
[WIP][~FEATURE] Rework coverage builder creation
[BUGFIX] Empty statements array returned in syntax tree iterator
[BUGFIX] Unsupported types in syntax tree iterator
[BUGFIX] Expression watching is too fine-grained

Currently, values from the debugger engine are fetched for variables,
property fetches and method calls. This does only make sense if we
evaluate all expressions ourselves–as the approach was changed to
evaluating only the conditions and decisions.
[BUGFIX] Probe can watch expression multiple times
[FEATURE] Use decisions/conditions as probe watchers
[FEATURE] Recursive coverage building
[BUGFIX] Wrong constructor parameters in coverage director
[TASK] Introduce monolog-based (debug) logging
[BUGFIX] Check for node children too lax in SyntaxTreeIterator

The iterator should only report back children if it really knows there
are children, i.e. it is known how this particular node type should be
handled. This information is already available for a variety of node
types, but not all; therefore, hasChildren() sometimes returned TRUE,
while getChildren() returned an empty array.

This commit might create new bugs related to missing subnode inclusion
orders, but this can easily be fixed by adding an entry to the
corresponding array.
[FEATURE] Recursive syntax tree iterator

This adds an event-driven approach to recursive syntax tree iteration,
which will be used e.g. for building the coverage hierarchy.
[FEATURE] Syntax tree stack
[TEST] Draft for decision coverage acceptance test