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, GC_PRESERVE_LIST takes precedence over GC_COLLECT_LIST,
sink_files are collected unless they appear on GC_COLLECT_LIST, and
source_files are never collected, even if they appear on
GC_COLLECT_LIST.