Blockfile cache: fix sparse + evict reentrancy problem, take 2.

Thanks to nedwilliamson@ (on gmail) for an alternative perspective
plus a reduction to make fixing this much easier.

Difference to take 1 is call to CacheTestFillBuffer in new test,
to address msan's reasonable complaints and not try to write an
unitialized buffer to disk (cache).

Bug: 826626, 518908, 537063, 802886
Change-Id: I1109f51511391c3c91bbeb76db0a09c319905819
Reviewed-on: https://chromium-review.googlesource.com/987515
Reviewed-by: Matt Menke <mmenke@chromium.org>
Commit-Queue: Maks Orlovich <morlovich@chromium.org>
Cr-Commit-Position: refs/heads/master@{#547159}
4 files changed