Fixes #911

Problem manifested like this:
After an unclean shutdown and recovery some index queries seemed to
return nodes duplicated in the same result.

Problem distilled to be:
When applying a transaction property updates (to be fed to indexes) are
derived by looking at the before/after views of the changed records.
Except for one case: where a label gets added to a node, in which case
updates for all its existing properties needs to also be generated. This
special case weren't previously isolated to labels added/removed to/from
existing nodes, but were always considered, even for (in that tx) created nodes.
This resulted in a normal commit working since properties aren't loaded
if the node already exists. But recovery would see those properties and
hence generate duplicate updates.

Solution:
Only generate label-changes-updates for (not previously existing) modified nodes.
Use | for extract, reduce & foreach in 2.0

And WHERE for filter. Also make these the default in documentation.
Correctly decode property value supplied as a query parameter.

Now uses the same InputFormat mechanism used elsewhere in the REST API.
There is still special handling for JSON lists, that must be converted to native arrays.
It was not practical/safe to reuse all the logic from PropertySettingStrategy;
the ultimate solution will only come when we introduce an explicit type system.
Merge pull request #917 from chrisleishman/comprehensionsyntax

Use | for extract, reduce & foreach in 2.0
Fixing Cypher docs bug and formatting.
Merge pull request #913 from tinwelint/fix-911

Fixes #911
Merge pull request #921 from apcj/2.0-array-property-values

Correctly decode property value supplied as a query parameter.
Index population failures can be retrieved later

There was confusion about who had the role of saying that an index was in
the FAILED state. Also sometimes the cause for the failure wasn't kept.

Now when an index population fails that index is put in FAILED state and
the schema index provider is responsible for keeping the failure cause as
well as being able to return it later.
Extra work
Move FailureStorage to kernel, document and make it always sync to disk
Merge pull request #922 from tinwelint/2.0-handle-out-of-disk-population

Handle out of disk space during index population.
Updated tests to run assertions in transaction.
Better formatting of property matcher description.
IndexRecoveryIT.java