Pass receiver and inheritee to constructors

Previously constructors involved in inheritance did not have access to
both receivers and the inheriting object. Now constructors are passed an
inheriting object as its first argument, and it is null if there is no
inheritance. As a use case of this, the exception refinement methods are
now constructors and may be inherited from.