MODE-2160 Added support for an index provider that stores indexes on the local file system

This PR adds support for a new index provider that stores indexes on the local file system using MapDB. This was the first concrete implementation of an index provider, and this helped identify problems in the index provider SPI added in earlier 4.0 alpha releases.

A number of tests were added to show that this new provider does appear to work pretty well, that the query engine is able to use the index providers to plan queries and annotate the query plan with information about applicable indexes, and the engine can then pick and use the best index (if there is one). Additional testing will be completed in other PRs.

The RepositoryConfiguration and JcrRepository classes were modified to support specifying and using indexes within the repository JSON configurations; index support had already been added to the Wildfly subsystem. Additionally, this PR exposes the IndexManager public API for registering new/updated index definitions and for unregistering (removing) index definitions.
wouldn't this be better named `estimateCost` ? Not sure what the `cardinality` has to do with the cost.