Add simple comment
Rename Task::fdstat to fstat
Make Task::fstat return a struct with its results
Move should-copy logic into TraceStream and create a distinction between the file being mapped by the tracee and the backing file we restore data from.
Move warning about shared writeable mappings to a better location
Hardlink mmapped files into the trace directory so we can replay after such files have been deleted or replaced.
Create AutoRemoteSyscalls::mmap_syscall helper
Use mmap_syscall helper in record_syscall
Use mmap_syscall helper everywhere
Make abort_scratch take an std:string
Report syscall number of unknown syscall
Handle invalid syscall numbers.

This is tricky because when SECCOMP is enabled, a negative syscall number
is treated as "skip this syscall" by the kernel, resulting in no
enter-syscall event being generated. So in that case we synthesize an
enter-syscall trace event.

Partially resolves #1379.