Introducing LabelScanStore

A LabelScanStore has one responsibility and that is to be able to quickly
and efficiently answer which nodes have a particular label. It will be
updated with node->label changes transactionally and generally integrates
with Neo4j similarly to SchemaIndexProvider, as a kernel extension.

A default implementation using lucene is added, which can rebuild itself
during the recovery phase of the db if the index backing the scan store is
missing or corrupted.

The main point of integration for the reading of a label scan store is in
statement operations method nodesGetNodesForLabel (in
EntityReadOperastions to be precise), where a piece of code looping over
the node store is now replaced by one line asking the active label scan store
instead.

Also the graph database configuration option "load_kernel_extensions" is
removed since there are now so many essential kernel extensions that it
does not make sense to run without. Prior to removing this there was a
SchemaIndexProvider that did nothing but fail when trying to populate an
index and was returned and used when there were no provider loaded. That
would start and work, but make little sense. Instead of going further down
that path with the label scan store that option was removed and exceptions
are thrown on startup directly instead of failing at an arbitrary point
some time in when the database is used.

There's a lifecycle change to get this to work, or rather some cleaning up
of lifecycle management in NeoStoreXaDataSource in that:
 o init
   - previously: life.init()
   - now: <nothing>
 o start
   - previously: life.init(), recovery, life.start()
   - now: instantiates a new LifeSupport, life.init(), recovery,
     life.start()
 o stop
   - previously: life.stop(), force
   - now: force, life.shutdown()
 o shutdown
   - previously: life.shutdown()
   - now: <nothing>

This change works, and is cleaner, with HA where potentially multiple
start()/stop() sequences are issued