Since we now (issue727) use almost everywhere Evaluator instead of Heuristic, we
need to think about whether we want to keep the Heuristic class at all, and if
yes, for which purpose.
Relevant note copied from msg7457:
Conceptually, a "heuristic" is evaluator that is supposed to measure goal
distance, but the current distinction between when to derive from Heuristic and
when from Evaluator is mainly based on other considerations. We should think of
how to distribute the responsibility and whether we want a class named
"Heuristic" or whether it should have a name that reflects more closely what it
actually does. For example, I think it could be useful to have an abstract base
class for evaluators that are not composites of other evaluators.
This also affects the discussion of "Heuristic" in task_proxy.h