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.
Remove the last references to deprecated Transaction.finish() from production code.
Remove unused old ShortString stuff.
Remove some calls to Transaction.finish() from test code.
Merge pull request #1171 from benbc/2.0-remove-deprecated-finish-calls

2.0 remove deprecated finish calls
converting nested literal maps for java compatibility
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
Removes the legacy parser
Moves testing of already used node and relationship identifier to the semantic checks
Adds semantic checks for shortestPath when used to CREATE