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
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.