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.
Simplify and specialise default object stringify

Rendering the names of every method in an object by default ballooned
too easily. Now Grace objects simply stringify to "object", but the
interpreter will add more information to object's asString methods if
they do not update the default, including the class and constructor name
of the object or the surrounding module name if no such method can be
found. Classes now stringify to their name.
Rebind the interpreter after evaluating a boolean

Simple boolean expressions lost track of the interpreter context after
evaluation, causing problems when 'this' was used later in the
interpreter. A simple test that combines booleans with vars has been
added to test this behaviour.