Move elf.hh to libutil
fstest: Better force page-in procedure

Previously we used madvise(0, _end, MADV_WILLNEED), which on Linux may
have done nothing because 0 wasn't mapped, or may have scheduled a
page-in but not actually done it.

Rather than depending on the whims of madvise, walk the ELF program
headers and explicitly touch every page from the binary.

This finally eliminates several odd conflicts we were getting on Linux
where a seemingly benign FS call would call getname_flags, which would
in turn fault in the kernel, entering the VM system and taking the
mm_sem lock.  The effect on the overall Commuter results is fairly
minimal, but this does make ~2% of tests that previously had conflicts
conflict-free.