* fix large (>10k replays) caches taking absurd amounts of time (~30 seconds) to check if they contained a replay. It now takes milliseconds
* fix cache incorrectly returning an old replay for a replay with the same user/map/mods, but a higher replay id (ie an overwriting replay)
* expose `num_chunks` for `steal_check` with `Detect.STEAL_CORR`
* properly parse and treat negative time frames for replays. This is the second time we've revisited negative time frames, and fixes what we think is the time of each frame getting out of sync with the game time of each frame after a negative frame
* lazy load `ReplayPath.user_id`