Refactor BufferedCache

Our current cache usage was slightly unreliable.
We have BufferedCache in place, but that only does its transactional-
like magic in SubmissionHandler's commit(), can't roll back and won't
properly keep written values around locally.

This patch will:
* add BufferedBagOStuff & LocalBufferedBagOStuff
* remove LocalBufferedCache
* rollback will invalidate potentially corrupted cache keys

BufferedBagOStuff is similar to what BagOStuff was, but:
* more thorough in implementation
* set() values will be returned on next get()
* when commit() fails, all previously written to keys are cleared
* extends BagOStuff
* no fixed expiration time

LocalBagOStuffCache is similar to what LocalBufferedCache was, but
now based on new BufferedBagOStuff.

LocalBufferedCache has been removed. BufferedCache has been changed
to wrap around the new LocalBagOStuffCache so we can set a fixed
expiration time. I've stuck to the BufferedCache name because
outwardly, it's the same to all places that call it, and we already
had some typehints in place that I didn't want to go rename all.

And there's tests for all of the new cache things.

Needless to say, this should be tested thoroughly.

Bug: 71377
Change-Id: I2cc65603ee422602e46fdf14cbc2261e392edc7e
Merge "Refactor BufferedCache"