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.
Test case for #536.
wq_pool: ask master, give foremen
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.
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.
Foremen send statistics to master.
Adds python binding to work_queue_get_stats_hierarchy
Clean up reaping of tasks
Simplify process_available_results.