Incorporating @s1monw changes:
1. made state transition threadsafe
2. added asserts that we are on the same thread etc.
3. only add a monitor to the index input if we are a clone - we can't expect that the uncloned instances are not shared between threads ie. for initial loading of DocValues