Preparing Cypher for new plan cache

o Added LegacyOperations to StatementContext for operating on legacy indexes.
o Refactored TraversalMatcherBuilder from a LegacyPlanBuilder to a PlanBuilder
o TransactionBoundPlanContext gets its StatementContext from the outside
o Implemented the ability for a QueryContext to upgrade to a LockingQueryContext.
o TransactionBoundQueryContext now takes it's StatementContext and Transaction from the outside
o Removed getTransaction from QueryContext
Adds SchemaState support to kernel

o Adds TransactionAwareSchemaStateHolder and plugs it into the cake
o Extracts UpdateableSchemaStateHolder, polishes tests, fixes transactional flush handling
o Adds schema state handling tests to SchemaStateOperationsTest
o Defers SchemaState flushing until an index comes ONLINE and makes the population job do that
o Adds LRU eviction to SchemaState
o Removes Class-usage and changes concurrency in SchemaState handling and some renaming
o Removed legacy index stuff from kernel API.
o SchemaState interface refactoring
o ROContext support
Refactors Cypher's cache handling

o Split caches between parsed queries and execution plans
o Resizes schema state on configuration change and fixes test
o Removes isPrepared and LRUMap schema state
o Pushing PlanContext usage to the right partial functions
Added ReferenceCountingTransactionContext

o readOnlyStatementContexts are now also reference counted
o StatementContext returns Iterators instead of Iterables
o Fixed problem in the LRUCache
Minor Cypher and Kernel fixes to bring in plan flushing

o Fixed LabelsFunction
o readOnlyStatementContext now can work with SchemaState
o Cypher doesn't try to use populating indexes
Fix: StoreStatementContext.getNodesWithLabel() now skips deleted NodeRecords
Fixes enterprise compilation
Merge pull request #655 from boggle/happitimes

Short lived statement contexts for core API & schema-aware Cypher execution plan cache