[query] Full support for manipulating multivalue properties

Adds support for updating multivalue properties with the UPDATE query:

UPDATE: This PR now includes support for evaluating functions as values over the previous syntax for updating multivalues properties. Currently only array functions are implemented.

The functions are based on the Postgres array functions.

````
array_remove($fieldSpec, 'ValueToRemove')
array_replace($fieldSpec, 'ValueToReplace', 'Replacement');
array_append($fieldSpec, 'ValueToAppend);
````

````cucumber
    Scenario: Replace a multivalue index by value
        Given I execute the "UPDATE [nt:unstructured] AS a SET a.tags = 'Rockets' WHERE a.tags = 'Trains'" command
    Scenario: Set a multivalue value
        Given I execute the "UPDATE [nt:unstructured] AS a SET a.tags = ['Rockets', 'Dragons'] WHERE a.tags = 'Trains'" command
    Scenario: Update single multivalue
        Given I execute the "UPDATE [nt:unstructured] AS a SET a.tags = array_replace(a.tags, 'Planes', 'Rockets') WHERE a.tags = 'Planes'" command
    Scenario: Remove single multivalue
        Given I execute the "UPDATE [nt:unstructured] AS a SET a.tags = NULL WHERE a.tags = 'Planes'" command
    Scenario: Remove single multivalue by index
        Given I execute the "UPDATE [nt:unstructured] AS a SET a.tags[0] = NULL WHERE a.tags = 'Planes'" command
    Scenario: Add a multivalue property
        Given I execute the "UPDATE [nt:unstructured] AS a SET a.tags = array_append(a.tags, 'Kite') WHERE a.tags = 'Planes'" command
    Scenario: Replace a multivalue property by index
        Given I execute the "UPDATE [nt:unstructured] AS a SET a.tags[1] = 'Kite', a.tags[2] = 'foobar' WHERE a.tags = 'Planes'" command
````
I removed this test in the end. This is one of the things I don't like about PHPSpec, its not that flexible.