Add support for native fd in Parrot.

This change allows tracees to have native file descriptors, which are not
intercepted/interpreted by Parrot in any way. This currently allows sockets and
pipes to be treated natively, as well as ttys already attached when Parrot
bootstraps the root tracee.

Various things to note about this commit:

o scratch space for rewriting exec and for changing open is done using a page
  from the stack. This makes it thread-safe.

o select/poll are now executed in the kernel without any interpretation by Parrot.
  This is accomplished by having a dummy unique open file (which maps to a pfs_pointer)
  for each file descriptor opened in Parrot (e.g. /chirp/host:port/foo). select/poll on
  a regular file always sets read/write/error status which is what we want.

o Before considering recvmsg/sendmsg, I had used a dummy "null" file descriptor
  (/dev/null) for open Parrot file descriptors. This was duplicated via dup2 to
  the desired fd. So if we opened /chirp/host:port/foo and set it to fd 3, we
  would have the tracee run dup2(<null fd shared for all tracees>, 3).

  Because of recvmsg/sendmsg being capable of sending a file descriptor to
  another process (which is fairly common), we need to "track" a Parrot fd that
  is sent to another tracee (we ignore a Parrot fd being sent to a process not
  being traced by Parrot, which at worst may break the application; we have
  never accounted for this possibility). We accomplish tracking an fd sent to
  another tracee by having the tracee create a file in the pfs_temp_dir,
  obtaining the inode, and then unlinking the file. Using this inode, we can
  identify a Parrot file descriptor received via recvmsg by doing stat on

      /proc/<pid of tracee doing recvmsg>/fd/<fd received>

  For sendmsg we need to increase the reference count for any Parrot file "in
  flight". There are important considerations though, from the comments for
  sendmsg in this commit:

    /* There is a situation where a process sends a file descriptor and the
     * receiver "discards" it unknowingly by doing a read instead of
     * recvmsg. We can't account for that since the kernel completely hides
     * that from us. So, it's possible an in-flight Parrot file descriptor
     * causes a reference increase on a file pointer but never a decrease.
     * It's also possible that a Parrot fd is sent to a process that is not
     * a tracee. Not only can we not see the recvmsg and decrement the file
     * pointer counter but that process receives a garbage "Parrot file"
     * too.
     */

o All socket/pipe operations fallthrough to the kernel. Sockets and pipes are
  always native.

o For open and openat (when path is absolute), if the file refers to a
  character or block device, we allow the open natively. This means a tracee
  can open/create its own terminals without inteference from Parrot.

o pfs_poll.* and all tracee wait states are obsolete and removed.

o When bootstrapping the root tracee, all regular files and directories
  that are inherited will be opened as Parrot files (as usual). The root tracee
  has to do some work before being attached by Parrot to open the unique Parrot
  files.

o The epoll* and shm* system calls are now allowed.

Fixes #48.
Maybe will fix (but does not currently) #346.
Add worst fit as an schedule option.

With WORK_QUEUE_SCHEDULE_WORST, the worker selected is the one with most
resources free, with the following heuristic to break ties:

free cores > free memory > free disk > free gpus.
Add wq_bowtie and updated wq_maker that works with MAKER 2.38.
Test case for #536.
wq_pool: ask master, give foremen
Merge branch 'parrot-native-fd' of github.com:batrick/cctools into batrick-parrot-native-fd

Conflicts:
	parrot/src/pfs_main.cc
	parrot/src/tracer.c
Simplify killing processes.

* Do not hook rt_sigaction or signal (32 bit).
* Old "interrupted" logic is unnecessary since parrot-native-fd branch.
* New pfs_process_cankill (formally pfs_process_raise) which encapsulates the
  logic pfs_dispatch*.cc needs for handling the kill system call.
* Remove obsolete logic in decode_write for handling SIGPIPE, which was necessary
  before parrot-native-fd when Parrot handled all tracee pipes.
Add missing paragraph tags.
Print wq_pool stats to stdout.
Only count tasks waiting at foremen in needed workers.
Delete masters list
Option to set average tasks per worker.

Defaults to number of cores.
Foremen update catalog on disconnection.
Add stat fields to work_queue
Consolidate work queue stats
Remember stats from removed workers
Receive info messages.
Process stats info messages
worker/foreman sends total_execute_time info.
Accumulate foremen hierarchy statistics.