Parse type literals at start of line as expression

Type literals that began at the start of a line are confused with type
declarations, as they start with the same keyword. The parser for type
declarations had a case to deal with this possibility, but it only
parsed the literal and did not continue on the line. The parser will now
parse a full expression, included method requests, binary operators, and
a new line.
Correct pattern names in runtime definitions

Some definitions in the runtime were wrongly using the abbreviated names
to refer to patterns when asserting that arguments were of the right
type. Now they refer to the full names. The implementation of & and | in
patterns now actually returns the pattern it was creating instead of
undefined.
Make tasks completely asynchronous by default

Allowing task continuations to run synchronously produced a memory leak
that blew the stack out easily in recursive method definitions. Now
calls to 'then' on a task follow the Promises specification by dropping
the call stack before continuing. However, this behaviour can be
overridden by the 'now' function, present on every task, which forces
each subsequent task to run immediately as well. Trying to force a task
in this way fails if the task has truly asynchronous behaviour.

A number of definitions in the runtime have been updated to adjust to
this new interface. Method application still uses setImmediate, but
rather than creating a custom 'now' as it did before, it binds into the
new 'now' interface by setting the memoised function to be run on force.