[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
````
technically yes. but I can't find a way to make the assertion work without refactoring the code .. maybe that wouldn't be such a bad idea.