All this test proved is that internal inconsistencies exist.
`(,@X) means (APPEND X) regardless of X's value, even if an atom.
`(,@1) is 1, and likewise `(1 ,@2) is (APPEND '(1) 2) => (1 . 2).
Since (LET ((X 1)) `(,@X)) and `(,@'1) both produce 1,
suspicion ought to have been cast on this test case.

Part 1:
- Avoid package-lock stuff until early-package.lisp is cross-compiled
so that WITH-SINGLE-PACKAGE-LOCKED isn't mistaken for a function.
(Can't just use the host's macro since that is a no-op)
- Ensure that REGISTER-LAYOUT can find STRUCTURE-OBJECT's classoid.

Part 2:
- Allow the cross-compiler to dump some subtypes of STRUCTURE-OBJECT
that are not STRUCTURE!OBJECT.

EXPANDER-FOR-DEFSTRUCT is now a function, not a macro,
and is present in the target image to make it less magic.