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.
Modify work_queue to create "cache" and "uncache" subdirectories to handle cacheable and uncacheable files.
Required adding "flags" entry to multiple work_queue protocol commands.
API is unchanged
Merge branch 'master' of github.com:cooperative-computing-lab/cctools
Fix remote_name test to work correctly on Darwin
More robust commit to fix issues with CONVERT and Darwin
Fixes bug when redifining a variable in makeflow.

Make evident previous memory leak when variables where not boxed.
See also: 5b5df326e19fee6fa491711cbaff4ad5f49ea530
Makeflow gc automatic preserve and collect list

Changes to the garbage collection code:

- reference counts are kept now in the dag (struct dag_file), and
  computed as the dag is constructed/executed, independently of whether
  we are doing gc.

- d->collect_table was changed from a struct hash_table to a struct set.

- incr_file mode was renamed ref_count. Original ref_count and incr_time
  mode were eliminated. on_demand mode left unchanged.

- Variable _MAKEFLOW_COLLECT_LIST was renamed GC_COLLECT_LIST.

- Variable GC_PRESERVE_LIST was added.

- Files to be collected are computed as follows:

((((all_files - sink_files) + GC_COLLECT_LIST) - GC_PRESERVE_LIST) -
source_files)

In which sink_files are targets that are not an input file of some node,
and source_files are the files that are not the target of some node.

In summary:

- If both GC_*_LIST are empty, but nevertheless gc is activated, then
  the files collected are:

  intermediate_files = all_files - sink_files - source_files.

- GC_PRESERVE_LIST takes precedence over GC_COLLECT_LIST.

- sink_files are not collected unless they appear on GC_COLLECT_LIST.

- intermediate files are collected unless they appear on
  GC_PRESERVE_LIST.

- source_files are never collected, even if they appear on
  GC_COLLECT_LIST.