Tidy up request tracing on raised exception

Requests were added to the stack trace when evaluating one of their
arguments raised an exception, but the argument will already report
itself, so reporting the request afterwards is not useful. This also
tidies up the post-request error reporting, tying in inheritance to
ensure that requests in inherits clauses are reported correctly.
Add Event* types for functions with ignored result

When requesting types, either none or all of the generic types must be
supplied, but there is no middle-ground. Because there is often a use
case for objects of type Function where the result is ignored, a
matching family of Event types has been added that types the parameters
but not the return type.
Simplify JavaScript exception handling functions

Rather than using the Grace-style exception handling methods from
JavaScript, the exception testing functions now just reach into the
raiser and use an instanceof check on the constructor in there to test
the outcome in a synchronous manner. Internal Errors now have the
original JavaScript error attached to their metadata, if such an error
exists.
Add cast method to types for foreign objects

Many of the runtime methods assumed that they were always given Grace
objects as parameters, but this was not necessarily true. Now all types
have cast() method which works as assert() but, if given a JavaScript
object, will return a Grace object that wraps the signatures in that
type over the actual parameter. A number of cases where cast was
unnecessary but a change was required to handle JavaScript objects has
also been added.
Report method return pattern on failed assertion

A failed assertion on a method return pattern reported the request site
as the original cause of the error. The pattern on the method is now the
subject of the first line in the stack trace.

The AST signatures were not being correctly stringified after the change
to their properties. This has also been resolved.
Include missing name in type assertion failures

Failure to satisfy a type reported the value and the type with the
exception, but did not mention the missing method name. Now the type
matching raises a more specialised error that reports the first
signature name that was not a method in the object.