Handle error continuations in a more sophisticated way.

Before: they were simply a Dart expression denoting a two-argument
function.  For finally error continuations, this created a
beta-redex (direct application of a function expression) when applied.
Making them higher-order functions, as an alternative, will eta-expand
ones that are already named.

Instead: introduce a pair of classes, one for named error
continuations and one for anonymous ones.  They have a pair of
methods, `reify` to get a dart expression representing the
two-argument error function, and `apply` to get a dart expression
representing the function applied to a pair of given arguments.