Simplify hit detection code

This PR is a major refactoring of the replay hit detection code, to simplify the code.

Previously the replay objects did not know about features, and they manipulated opaque `data` objects instead. This was true until we introduced the `skippedFeatureHash`.

This PR clarifies the situation by removing the opaque `data` object. The replay objects now know about features, which simplifies and clarifies the code.