use templates for process_syscall in diverter.cc
use mmap or mmap2 as appropriate for the architecture

Older systems like x86 had an mmap syscall that took a byte offset for
the sixth argument.  However, doing so meant that large files (> 4GB)
couldn't be mmap'd.  To address this, a replacement mmap2 syscall was
created that took its offset in units of pages, rather than bytes.

x86-64, however, has no problem with using byte offsets, and therefore
has no mmap2 syscall.  So we need to use the appropriate syscall for the
architecture of the process we're tracing when making remote syscalls.
use templates for Task::maybe_update_vm