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.