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.