decode_* should treat p->syscall_args as const

So we had some subtle bugs caused by us changing p->syscall_args. This array is
used to restore the arguments given by the tracee when exiting a system call
(p->syscall_args_changed). We should never modify it. I have changed the args
pointer to a "const *INT64_T" so as to avoid this problem in the future.

There is also another bug this commit fixes: the ceil division was incorrect
for mmap2 which caused a 0 offset to become 1. The linker in particular would
complain about this.

Finally, for x86_64 Parrot running a 32 bit application (pfs_dispatch.cc), we
change POINTER to remove the leading 32 bits. There was an issue (which causes
changed to a 64 bit high address. e.g.

0xffde0000

becomes

0xffffffffffde0000

So we 0 the leading 32 bits to fix that.

Fixes #511.
msync when changing the channel

As we do in pfs_table.cc when loading a file into the channel, we should msync
when we divert_to_channel.

I also changed M_SYNC to M_ASYNC as it is not necessary that the backing store
be updated synchronously. We only care about the buffer cache being consistent.