[ENGINE] Add engine lifecycle store reference to EngineHolder

This commit add the engines reference to the store out of the actual
implementation into the hodler since the holder manages the actual lifcycle.
Engine internal references like per searcher or per recovery are kept inside
the actual implemenation since the have a different lifecycle.
Test: fix this test to work in IntelliJ
fix cache key methods on leaf reader
Add test that ES filterreader getCoreCacheKey() behaves correctly.

Closes #8831.
Stats: Add more fine grained memory stats from Lucene segment reader.

This is a start to exposing memory stats improvements from Lucene 5.0.
This adds the following categories of Lucene index pieces to index stats:
* Terms
* Stored fields
* Term Vectors
* Norms
* Doc values