Computes and prints the covariance matrix.
Writes the cluster tree as an output.
Adds category labels to the rules of a makeflow.

Labels are assigned according to the name of the variable in the
macro MAKEFLOW_TASK_CATEGORY (which right now is
"MAKEFLOW_TASK_CATEGORY").

For example:

one: src
	cmd

MAKEFLOW_TASK_CATEGORY="buzz"
two: src
	cmd

three: src
	cmd

four: src
@MAKEFLOW_TASK_CATEGORY="potatoe"
	cmd

five: src
	cmd

MAKEFLOW_TASK_CATEGORY="woody"
six: src
	cmd

MAKEFLOW_TASK_CATEGORY="buzz"
seven: src
	cmd

assigns the following categories (here naming a node by its output):

                     buzz: two, three, five, seven
                  potatoe: four
                    woody: six
without_explicit_category: one

A category is represented internally with a dag_task_category,
which keeps the label, and the member count.