Split 'eval'.

Now 'eval' canonicalises and then passes things off to 'eval_canonical', which
expects things to be pre-canonicalised. This allows for limiting how much we
retraverse the same trees applying the same transformations.