Add dialect checking mechanism with AST

Modules which define a method named checked will now be passed the AST
nodes of the modules which use them as a dialect. A checker method may
raise a Checker Failure exception with a node from the AST to indicate a
static error at that point. The AST has been adjusted to be make
processing a checker method a little more sensible.

Some bugs in the JavaScript to Grace method lookup have been identified
and resolved by this change. The lookup will now also pretend that
JavaScript arrays have the built-in List methods.
Correct outer search to include prelude

The definitions on the prelude were not included in the actual scope
object, so the searchScope method could not locate its definitions. This
meant that outer could not reference definitions in the prelude. Now all
the prelude definitions are copied into the scope object when the
interpreter is created.
Rename list to sequence, complete coercer

The list objects stringified to as a 'sequence', and have now been
renamed throughout to use that name instead of list. A sequence class
is now available in the prelude. The type 'Do' has been moved from the
Grace prelude into the runtime, as it is now used internally.

The lookup mechanism on JavaScript objects has been updated to handle
all primitive types, providing methods as though they were the built-in
Grace objects when no such property exists on the primitive value.

This change also tidies up a few misnames in the primitive definitions,
and the built-in Boolean type.
Add Not A Number and simple number parsing

Strings now have an 'asNumber' method which will perform a simple parse
of the string into a number. It will raise the new Not A Number error if
the string is not a valid number. This error now also occurs on division
by zero.
Add a check method to handle static failures

The parse method on the hopper module has been removed in favour of a
check method, which performs both a parse and runs the dialect checker
if it exists. The outcome is either an object with information on where
the error occurred (if such information has been provided by the
original error) or the parsed AST if no error occurs. The interpret and
module methods will now also accept a pre-parsed AST, allowing a
two-step process of checking a module and then running it later without
re-parsing and checking it again.

The internal checking logic has been simplified, and a spelling mistake
on the nodeOrIfAbsent method resolved. Parse Errors have been renamed to
Parse Failures, to match with the naming scheme of other errors.