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.
SQUASH Prelude