(maps_next): After reading less than a full buffer of data, copy
remaining data to the top of the buffer so as to maintain the
invariant that all data between mi->buf and mi->buf_end is valid.
This avoids maps_next() parsing uninitialized data.
(maps_init): Try to mmap() a one-page buffer and, if successful,
initialize the new map_iterator members based on it.
(maps_next): If the one-page buffer is available, use it to read
/proc/PID/maps. This avoids expensive lseek() calls which,
in the case of /proc lead to T(n) = O(n^2) behavior.
(Logical change 1.208)