Add annotation processing phase before inheritance

In order to ensure inheritance properties are maintained, annotations
must run after methods are attached to objects but before inheritance
runs. In order to handle this, annotations now run in a separate phase
after every definition has been hoisted, and references to self,
explicit or implicit, is disallowed to avoid observation of mutation of
the object's structures. It is expected that only highly obscure code
will ever encounter this restriction. A number of the annotation tests
have had to remove their annotation constructors in order to satisfy
this new restriction, replacing them with the more standard publicity
annotations.

Certain inheritance mechanisms are now guaranteed by the interpreter,
ensuring that methods cannot be hidden by an override with a
confidential method and type declarations can never be overridden.

The UninstantiatedType exception has been renamed to IncompleteType to
mirror the new IncompleteObject exception.