Move the adversarial file system to the io module
Add a robustness test for the page caches

It uses the adversarial file system to throw lots of exceptions at the page cache implementations.
It currently fails. Badly.
Make the MuninnPageCache survive the adversarial file system

* Fix a bug in the AdversarialFSA where mischief might prevent client code from
  ever reading the last byte of a chunk into a buffer.
* The Muninn eviction thread now no longer dies if flushing on eviction throws
  an exception.
* This makes Muninn able to recover from arbitrary errors, should their cause
  disappear.
AdversarialFSA PageCacheTest

Increase failure probabilities and fix some of the failures in the StandardPageCache.
Not all of the failures are fixed, though, so the test is still failing.
It has therefore been ignored for now, because we want to get the fixes for Muninn into master as soon as possible.
Merge pull request #3070 from chrisvest/2.2-pc-robustness

2.2 PageCache robustness test based on the adversarial file system