Move RepeatRule to the io test package

Also not a todo comment on an important area of the page cache that needs more testing.
Also extract some threading utilities out of the PageCacheTest into a utility class.
Fix a page cache bug when faulting throws

Both the StandardPageCache and the MuninnPageCache had a bug where, if IO on swapping a
page in threw an exception, the page faulting procedure did not properly clean up after
itself.
This left the page caches in inconsistent states, that would eventually lead to
deadlocks.
Make the MuninnPageCacheTests run faster

... by not doing explicit GC when the page cache is closed.
We disable this feature anyway on all platforms but Windows.
Merge pull request #3024 from chrisvest/2.2-flaky-pc-test

Fix a page cache bug when faulting throws