MERGE documentation improvements.

Improve wording of introduction.
Add MERGE to syntax highlighting keyword list.
Fail uniqueness constraint creation if concurrent updates violate the constraint.

It is possible that changes are made (by another transaction) that violate a constraint in between
that constraint being added to the transaction, and the transaction committing. This should fail
the transaction that creates the constraint upon committing the transaction.

This is done by having the backing index enter a semi-live state where all constraint violations
are recorded as "evidence" of violation, but not thrown to the transaction that violated the constraint,
instead this evidence is thrown to the transaction that creates the constraint.
Merge pull request #794 from apcj/2.0-merge-doc

MERGE documentation improvements.
Reduces garbage left behind in /tmp

o RRD file location when impermanent db was supplied as a directory, which
  made opening it always fail and create one extra "rrd-invalid"
  file/directory that the tests didn't clean up.
o Generally making sure tests that create temp file deletes them in @After
merging caef3b67512a4ea2af2866da88b62d199e95177a
Merge pull request #796 from lassewesth/master

Using junit instead of ruby for acceptance tests
Refactoring in preparation of doing uniqueness checking while building indexes with lucene.

Added FAILURE type parameter to Visitor interface to allow checked exceptions to propagate.
Introduced IndexProviderCompatibilityTestSuite to verify contract of schema index providers.
Early stages of uniqueness checking during lucene index population.
Merge pull request #790 from tinwelint/2.0-reduce-tmp-garbage

Reduces garbage left behind in /tmp after tests
Dedups property keys when migrating from older format

The Kernel API assumes only a single name -> id mapping for property keys,
but stores prior to 2.0 might have property keys with more than one id
attached to it. Up until now 2.0 have prevented that from happening, but
haven't removed those duplications in the migration process, so there
might be upgraded 2.0 stores with this problem still. To guard for that
the property key token "holder" has got functionality for returning all
tokens for any given name if there were more than one. This commit also
removes that extra functionality so that there's no way that duplicates
can exist or be read anymore.

Migration will now compact the property key store since the property store
will have to be scanned and updated with property key dedupings in
migration anyway.

Also cleans up around Token classes and holders. Added one Token class
that represents name+id and use it almost everywhere
instead of separate duplicate token classes. Also makes TokenHolder manage
Token or subclasses thereof for simplifying its implementation and
reducing need for subclassing it.
Increased guard timeout. This test should be waaay less flaky now on e.g. Windows
Guard timeout even more flexible on the upside
Adds the MERGE Cypher command to the Neo4j shell
Hang-prone tests got proper process dumping added

They were using DumpProcessInformationRule, but incorrectly. So this
commit fixes that as well as making DumpProcessInformation/Rule a bit more
flexible in process selection.

Also added a test for DumpProcessInformation.
Make casting of generic Visitor safe.

 Through the use of reflection for verifying the cast.
Add diagnostics for port conflicts.

Uses lsof to discover the process that has bound a port if a conflict is detected.
Adds missing license header.
Bug Fix: infinite loop in port conflict diagnostics dumper.
Merge pull request #800 from tinwelint/2.0-working-dump-proc-info

Hang-prone tests got proper process dumping added
Makes Cypher keep track and report indexes and constraints added/removed
Enforce uniqueness constraints with lucene indexes.

The implementation is still missing in a few cases, but the most rudimentary cases work.
Adds are being checked, but updates are still missing.

Introducing infrastructure for grouping together compatibility feature sets into test suites.
This is used for the index compatibility test suite, allowing each index provider to only
extend a single test class in order to verify compatibility with the SchemaIndexProvider API.