Handle syscall-stop, exec-stop and group-stop.

-- syscall-stop --

We now unconditionally set the ptrace option PTRACE_O_TRACESYSGOOD. This
simplifies detection of a syscall-stop. Support for this was added in 2.4.6.

-- exec-stop --

exec-stop is introduced in Linux 2.5.46 and is turned on use ptrace option
PTRACE_O_TRACEEXEC. Using this option turns off the redundant third SIGTRAP for
execve. Requiring this option sets a hard dependency in Parrot for 2.5.46+
kernels.

We still do not handle the case where a thread which is *not* the thread-leader
(i.e. thread ID == thread group ID == process ID). How it should work is
documented pretty well in the ptrace man page but looks complicated to support.

-- group-stop --

This branch uses PTRACE_SEIZE (for Linux 3.4.0+) to enable handling group-stop.

When a thread enters group-stop, we move it to the new PFS_PROCESS_STOP_STATE.
It is necessary to distinguish this from PFS_PROCESS_USER_STATE because a
parent calling wait with WUNTRACED only gets the stopped child *if it is still
stopped*:

    WUNTRACED   The  status  of  any  child  processes  specified  by pid that
                are stopped, and whose status has not yet been reported since
                they stopped, shall also be reported to the requesting process.

compare to WCONTINUED:

    WCONTINUED  The  waitpid()  function  shall  report the status of any
                continued child process specified by pid whose status has not
                been reported since it continued from a job control stop.

so, a process which has received SIGCONT will notify the parent no matter what
its current state is.

In addition to handling group-stop, we also correctly notify parents if the
child has been continued.

Fixes #330.

Maybe addresses #270.
Merge branch 'parrot-stop-state' of github.com:batrick/cctools into batrick-parrot-stop-state

Conflicts:
	parrot/src/pfs_main.cc
	parrot/src/pfs_process.h