Add a missing call in the inequality method

The inequality operator was returning the 'prefix!' method rather than
calling it. Now it is properly invoked, and the result is checked to
ensure that it is a boolean.
Update runtime part and inheritance definitions

A variable part count to a method creation wasn't being processed
correctly when it was the only part information. The newClass helper in
the runtime was also using an outdated semantics for inherits.
Handle internal errors after a request

The update to the report method didn't take into account that there is a
separate reporting mechanism for requests. The request reporting now
also handles internal errors and will also check to see if there is
anything in the stack trace before attempting to modify it.
Correct hoisting behaviour to only evaluate once

The variable hoisting method was not checking if the variable was being
hoisted before evaluating it, which was causing it to be evaluated
twice. Now it is not evaluated during the hoisting phase.
Ensure that inherit is also a valid Grace method

The inheritance method that was generated by the interpreter was just a
regular function, which confused that part inspector of the runtime. Now
the interpreter generates a runtime method with the same parts as the
original method.
Fold comments into preceding newlines

Comments broke up the new line folding and produced more than one new
line at a time. Now the newline folding has been tidied up and can
account for comments. The leading character of a comment is no longer
temporarily lexed as a symbol when the second character is present.
Allow error writing to process non-Grace objects

The toString helper in bin/write assumed that its argument was a Grace
object, but it was being passed objects such as strings as well. Now it
checks to see if its argument is a Grace object and performs a normal
toString if it is not.
Rewrite variables to better understand inheritance

Variables were fickle in the presence of inheritance. They are now
hoisted and maintain a super reference in the same way as methods, but
raise an undefined error if they are touched in any way until the
lowest-most field has actually been encountered in the initialisation
code, including assignment. The latter case is achieved by hot-swapping
the variable's pattern from one that raises the desired error to the
real pattern.

Searching for definitions in scope now searches in self before searching
locally when it reaches the scope where self is defined. Searching in
self can be entirely disabled, however.
Compare pretty method names when validating super

The test that two methods had the same name when validating a super call
was comparing a pretty name to an uglified name. Now the two pretty
forms are compared.
Reprocess indentation after block parameters

Previously indentation could only occur after an opening brace, which
resulted in parameters preventing a block from gaining an indent. Now
the indentation process is run again after block parameters.
Additionally, the indentation is not required to be greater after an
opening brace, allowing more flexible layouts with parameters.
Run dialect and imports before hoisting anything

The dialect and imports were being run after hoisted code. Now they are
run first, before type declarations.