Allow newlines before a close parenthesis

The parser wasn't permitting a new line to follow an expression in
parenthesis when dropping back to a previous indentation. Now an indent
in parentheses are just treated as a continutation line, but a newline
is permitted at the end.

The error message "Unexpected use of" has been changed to "Unexpected
appearance of" to reflect the fact that some tokens aren't actually
written by the programmer.
Add pattern interface to literals

Booleans, numbers, and strings now inherit from AbstractPattern and
implement a match() method based on their equality. Equality for numbers
and strings also no longer assume that their argument is of the same
type. The pattern combinators have better asString implementations.

Action's assert() method has been restored to normal, and now it is just
orElse() that isn't asserting.
Correct the block matching, add parameter patterns

The block definitions have been moved to primitives, and now extend
AbstractPattern. Calling match on a block will run the block if the
pattern on the parameter matches, and produces a successful match
containing the result of the block.

Block parameters can now use arbitrary expressions in parameter
positions that implicitly creates a variable with an ignored name. Any
expression which does not start with an identifier or an underscore will
be parsed as a pattern, and requests can be handled by wrapping them in
parentheses.