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.
Adds the MERGE Cypher command to the Neo4j shell
Merge pull request #799 from tinwelint/2.0-unique-propkey-migration

Dedups property keys when migrating from older format
Merge pull request #797 from systay/merge-app

Adds the MERGE Cypher command to the Neo4j shell
Code cleanup based on IDE (intellij) warnings.

Remove unused/commented-out code.

Use emptySetOf( Type ) instead of asSet().

Limit references to the deprecated GraphDatabaseSettings.

Remove usages of deprecated junit.framework package.
Remove deprecated ProgressIndicator.

Add open ended ProgressListener to the ProgressMonitorFactory to support the one remaining use case ProgressIndicator had.
Merge pull request #808 from thobe/2.0-spring-cleaning

Spring cleaning
Enforce uniqueness constraints on property update through online-accessor for in-memory and Lucene indexes.

Added several tests for updating properties in single and multiple transactions.
Introduced specialised constraint violation exceptions, depending on whether conflicts were previously committed.
Restructured in-memory index index implementation into a number of classes in their own package.
Extracted handling of property uniqueness checking into its own class, reusable from different index implementations.