Chaining SymbolTable between update actions MergePatternBuilder
Refactoring of Predicate.rewrite

This method didn't follow the signature from AstNode - instead of returning an Expression,
rewrite returned a Predicate. This meant that it is impossible to rewrite predicates that
are used as expressions to something other than Predicate.

When Cypher is caching expressions, it uses this rewriting. This is done when using
complicated expressions with sub-expressions that are aggregate expressions mixed with
sub-expressions that are not aggregating. In these cases, the rewriting would fail and
manifested itself through a "Missing identifier" error.

 The solution is to move the expectation that rewrite will return a Predicate to the user
 of the method.
Added tests for failing query mixing predicates and aggregates
Updates to profile information
Add support for reporting entity producers of merge node actions from profile

This is not complete update action support in 2.0 profiler but should help tracing query problems with MERGE
Filtering relationships by literal property in pattern predicates

(based on systay's 3db3d279b1f1aeb896d68f7b05c6b9becea58005)