Ignore gdb requests to write 0 bytes to memory.

gdb seems to send one of these to the magic address before the 4-byte
write to the magic address that triggers taking a checkpoint.
Ignore gdb writes to orig_eax during non-diversion sessions.

gdb sets orig_eax to -1 whenever it sets the program counter. The
reason is explained in gdb source code: it's a way to tell the kernel
that if we're in the middle of a system call (and jumping out of it),
the kernel should not attempt to restart the syscall.

Every time gdb does a restart, it sets the program counter to its current/
initial value, which (due to the above) also sets orig_eax to -1. But
when we're restarting from an rr checkpoint, this is incorrect; we need
to leave orig_eax alone.

gdb's reason for performing orig_eax writes applies to diversion sessions
but not replay sessions, so we honor such writes in diversion sessions but
not replay sessions.
Rename 'suppress_warnings' to 'suppress_environment_warnings'.
Make tests fail if any error or warning is printed.

Resolves #1244.