Rename the Event* types to Procedure*

The name Event was chosen because it often appeared as a response to an
event, but it does not actually represent an event. The family of types
has been renamed to Procedure, as this reflects their status as objects
which take some input and produce no output.
Retrieve dialect methods directly from the object

The existing dialect mechanism required that the object set to 'self' at
the top-most scope, but also that all the method names appeared in the
scope object. Now the searchScope method will look in self when it
reaches the top. This resolves a bug where custom dialects would not
respond to outer, as they did not have their methods copied into scope.
Ensure delegation sets the appropriate self value

The value of self in a Grace-defined method is always bound to the
surrounding scope, even if the actual method is called with a different
context. Now Grace methods will look at the context they were called in
and swap out the calling self if the two are different. This allows the
delegateTo() method to set the self value to the calling object.

The default stringification has also been tidied up to account for calls
to asString during the object's creation. All objects created by the
interpreter will now have a custom asString, though this may be
overridden.