Add rr's own locally cached view of processes' address spaces.

This commit adds a cached address space structure and updates it per
syscalls that affect memory mappings: mmap/mremap/unmap/et al.  The
patch is straightforward except for the |is_adjacent_mapping()| helper
which decides if two mappings should be merged.  The subtlety in that
helper is that the heuristics were chosen so that the cached map and
the kernel's (/proc/[tid]/maps) maintain a bijection, for simplicity.

Also added is a new "-k/--check-cached-maps" flag, which has rr assert
that its locally cached map matches /proc/[tid]/maps after each
syscall.  This flag is now enabled for all unit tests and should
default on for future DEBUG builds.

r?/f? @rocallahan, however in depth you want to look.