Add cores for rmsummary parsing
work_queue_worker was not returning the correct exit code.
It now correctly parses the status returned by wait4() to extract
the exit code or terminiation signal.
Bound the size of debug messages.

Change ?sprintf to ?snprintf in do_debug.

This fixes Neil's segfault. _MAKEFLOW_COLLECT_LIST gets immense, which
was bothering vsprintf.
Wraps monitor with category.

Also, move codes around so that the wrapping for the monitor and batch
options get the same scope.
Consolidate monitoring in a single function
Stop and report when rule goes over limits
each slurm_submit_workers invocation only submits one batch even if multiple workers are started
Updates resource_monitor documentation.
Update batch wq to work_queue_task_specify_file.
Add test case to remote renaming.
Fixed issue with file renaming (-> syntax).

Files were always being cached, even when Makeflow couldn't guarantee that they weren't uniquely named on the remote host.
It now only caches files if the remote and local names are the same, to ensure safety.
Correctly re-mark unlabled tasks that have been evicted from a worker so they don't clog the scheduler.

Previously, when a completely unlabeled task was assigned to a worker, it was labeled with the worker's resources.  If that worker was released, the task would be put back into the ready list without clearing out the old worker's values.  If that worker happened to be the "best" in some category, the task would not be able to be assigned to any worker in the system, and would sit at the top of the list, waiting for assignment, blocking any other tasks in the queue.

Now, a partial fix is for unlabled tasks to be reset every time they are removed from a worker.  We still need to look at the scheduling algorithm, though, to ensure that a poorly labeled or resource-demanding task won't hold up any of the other tasks.
add libwork_queue.a as a dependency for makeflow, to force rebuilding after changes to batch_job or work_queue
Box variables with tags for memory allocated size.

Each makeflow variable value now has tags for its length as a string,
and total memory allocated size. This is with struct dag_variable_value.

This produced the following changes:

- To obtain the value the string value, call dag_lookup_str, rather than
  dag_lookup.
- d->variables, and n->variables now keep struct dag_variable_value,
  rather than chars.

The structure has the following associated functions:

dag_variable_value_create
dag_variable_value_append_or_create
dag_variable_value_free

This change became necessary given the massive makeflow files from Neil
Best. Now the append operator (+=) linear instead of quadratic (by
keeping the length, we do not have to compute strlen every time).  Also,
when appending to a variable, allocated size is doubled if needed, which
reduced the calls to realloc from n to log(n).

dag_variable_value_create makes evident that we need to rework how
variables are used through makeflow. In particular, we cannot always
free a value when redefining a variable, as this causes segfaults
somewhere else.
Each category now tracks with nodes belong to it.

This is needed to correctly implement dag_to_file.
Adds @vars to dag_to_file
Do not include special variables in d,n->variables
Add categories to dag_to_file
Implements variables with category scope.

This change will allow to easily define variables such as BATCH_OPTIONS
per category.
Change makeflow test TR_makeflow_remote_naming to check for both successful translation of filenames and for avoidance of cache conflicts.