Tidy up inheritance and super semantics

The use of self inside an inherits request is now banned, with the same
Incomplete Object error that occurs when referencing it in annotations,
as the 'object' property on the scope is maintained when the first node
of an object body is an inherits clause. The processing of the clause
tidies up the property instead. A few other superfluous properties have
also been removed.

The rules for processing super requests are now more liberal, and they
may now appear outside of the method they are requesting. In all cases
use of super will resolve to the first method defined above the current
inheritance level, or an error if no such method can be found. This is
achieved by storing the existing definitions on the object at the moment
the inherits clause is encountered. A number of tests have been
introduced or changed to test this comprehensively.