ASSERT reports arguments in calls of lexical functions

ASSERT now checks the lexical environment in addition to the info
database to determine whether SYMBOL in

  (assert (SYMBOL . ARGS))

is a function and thus permits evaluating ARGS for the error report.
CHANGE-CLASS finalizes inheritance of new class if necessary

The methods on CHANGE-CLASS for

  FORWARD-REFERENCED-CLASS    -> STANDARD-CLASS
  FUNCALLABLE-STANDARD-OBJECT -> FUNCALLABLE-STANDARD-CLASS

did not ensure the inheritance was finalized before accessing the class
precedence list.
CHANGE-CLASS now works correctly on unbound slots

Previously, CHANGE-CLASS of an instance with unbound slots could signal
an error when the unbound marker was type-checked against the type of
the destination slot.
CHANGE-CLASS into FORWARD-REFERENCED-CLASS signals correct error

Previously, CHANGE-CLASS into FORWARD-REFERENCED-CLASS signaled an error
about no applicable method.
CHANGE-CLASS no longer signals bogus TYPE-ERRORs despite initargs

Previously, CHANGE-CLASS signaled TYPE-ERRORs when slot values did not
conform to the new type of the slot even if a initarg with a conforming
value had been supplied.
Shared helpers for %OBSOLETE-INSTANCE-TRAP, %CHANGE-CLASS

The new helper functions %ENSURE-SLOT-VALUE-TYPE and
%SET-SLOT-VALUE-CHECKING-TYPE are used by %OBSOLETE-INSTANCE-TRAP and
%CHANGE-CLASS.
Rewrite of CHANGE-CLASS tests

New stuff:

* Helper function CHANGE-CLASS-TEST-CASE
* Smoke test
* Test type checking of slot values
* Test interaction with initforms and default initargs
* Test CHANGE-CLASS on FORWARD-REFERENCED-CLASS
* Test CHANGE-CLASS on FUNCALLABLE-STANDARD-CLASS
Fix GENCGC and core saving on ARM.

ALLOCATION_POINTER was inconsistently used, resulting in incorrectly
saved cores. Always use ALLOCATION_POINTER on GENCGC ARM.

This change may have broken arm-cheneygc, something to check later.
Even better would be to make all the variations to use one thing,
instead of dynamic_space_free_pointer and ALLOCATION_POINTER.

Fixes lp#1349795.