parameterized index implementation type

This allows for a future blackhole index type or record-everything
index type for better testability.