Do not read from non-recovered store files.

During recovery, reading from the store files is not safe, since they
might be in an inconsistent state until the store has completed the
recovery phase. The transaction log does not contain information about
data that did not change though, so rebuilding indexes requires reading
from the store files.

These changes defer the reading of the store files for the purpose of
rebuilding the indexes. We keep a running set of which nodes have been
updated by the commands in the recovery processes, and at the end of
recovery we drop any information about those nodes from the indexes, and
rebuild them by reading the current (final, consistent, and stable)
state of each changed node from the store files.
Merge pull request #1448 from thobe/2.0-do-not-read-unrecovered-store

Do not read from non-recovered store files.
Ensure that we remove index entries when labels and properties of a node are changed in the same transaction

When we build REMOVE NodePropertyUpdates based on node commands we read the before value from
the store. This is incorrect when the property and labels have changed in the same transaction and can cause
IndexingService to not correctly remove index entries.

To side-step this issue, this commit builds a lookup table from (nodeId, pkId) to NodePropertyUpdate
for CHANGE updates in WriteTransaction. These updates contain the correct before value and lead the proper
de-indexing.

A solution that doesn't need a lookup table would be nice but this fixes it for now.