Improve performance of page faulting

It turns out that querying the size of a file, though a FileChannel, is quite slow.
This change make the page cache track the sizes of files precisely, so we don't
have to call FileChannel.size() on every swapIn().
Improve performance of page faulting

By not spinning so much on the LockSupport.unpark() call, because that can
cause a lot of interferrence with the eviction thread, while it is trying to
get some work done with evicting pages.
Merge pull request #3164 from chrisvest/2.2-page-fault-performance

[2.2] page fault performance