Fixes a race condition between index population and incoming updates

where the index could end up having duplicates (or more) for any given
entry.

Solution is to change (and clearly document) the contract of the
IndexPopulator#update method in that all updates must be applied in an
idempotent manner. This will incur an overhead in the index population,
but it's a background process and updates comes in in batches so the
overhead is somewhat minimized. Data coming in via IndexPopulator#add does
not have to be checked for idempotency and that fact was clarified a bit
in the javadocs as well.
Better handling of lucene corruption.

 o Label scan store now halts database start if lucene is corrupt, with an exception explaining how to resolve the issue.
 o Lucene provider for new indexing now marks corrupt indexes as failed, such that the user manually must drop the index and re-create it.
Correct result type of labels() function

Now collection of strings. Fixes #1173.
Move a functional test from its own folder to src/test.
Merge pull request #1175 from tinwelint/2.0-index-popupation-deduping

Fixes a race condition between index population and incoming updates
Merge pull request #1174 from cleishm/labels_type_fix

Correct result type of labels() function
Merge pull request #1165 from jakewins/dont-start-on-corrupt-idx

Better handling of lucene corruption.
Merge pull request #1180 from benbc/2.0-move-integration-test

Move a functional test from its own folder to src/test.
Descriptions for public packages.
Require parens for bare nodes with labels

When using labels in patterns, parenthesis must be used.
ie. CREATE (n:Foo:Bar)
Merge pull request #1178 from cleishm/no-bare-nodes-with-labels

Require parenthesis for bare nodes with labels in patterns
Update docs and changelog to reflect mandatory parenthesis around nodes with labels.
Ensures tx manager gets called in KernelTransaction#commit no matter what

Calling KernelTransaction#commit must end up calling transaction manager
commit/rollback so that the transaction will get finished properly.
This is done by having any operations done before it gets performed in a try
clause with the tx manager delegation in its catch/finally clause.
Merge pull request #1184 from jotomo/parenthesis-vs-labels-docs

Update docs and changelog to reflect mandatory parenthesis around nodes ...
Merge pull request #1176 from tinwelint/2.0-shell-fail-rollbackonly-commit

Ensures tx manager gets called in KernelTransaction#commit no matter what