Add up to 20 repeats of mixfix control structures

The definitions of many control structures in the prelude were defined
multiple times for an increasing number of parts, to produce control
structures of larger size. Now these definitions exist internally, and
each control structure may be used with up to twenty uses of the
repeating part. The elseif() part has been renamed to elseIf() for
consistency, and try() catch*() finally?() now has generic parameters
over the result. The MatchFailure object has been moved into the
exception definitions as a result.

The match result objects have had their result method renamed to value,
for consistency with the corresponding paper. A Nothing pattern has been
introduced which matches nothing, to indicate definite failure.
Extend the exception interface and hierarchy

Exceptions now provide methods for retrieving information from their
backtraces, as well as access to the backtrace itself. The hierarchy of
errors has been split between the pre-existing Internal Error, which
represents a bug in the interpreter; Runtime Error, which indicates an
error in the runtime due to an erroneous program; and Logic Error, which
indicates an error as a result of a program that is semantically correct
but which has nonetheless produced an error. Two, unused classes of
exceptions now exist in the prelude, for future use, as well as a new
Logic Error that indicates use of an abstract method.

To facilitate this change, adds a fold() startingWith() method to
sequence (and therefore strings), and has made the tidy up of the
backtrace following use of assert() more consistent and reliable. A new
pattern called 'Foreign' has also been added, which matches against
JavaScript objects that are not Grace objects.