add :TYPE for some STRING-OUTPUT-STREAM slots

The transition through FILL shows up in some profiles when
GET-OUTPUT-STREAM-STRING is used heavily.  Add :TYPE information to the
appropriate slots so the compiler knows LIST-FILL* can be used.

Moving the NREVERSE call is required so the compiler understands that
PREV is actually of list type.  NREVERSE's :DERIVE-TYPE is set up
correctly; I think the compiler's failure to understand that

  (setf prev (nreverse prev))

is not also a list is just fallout from the compiler not dealing
well with SETF and/or some fault in the type derivation itself.
Have LDB understand UCS-4 strings instead of showing as #<ptr to...>

Also fix 2 warnings about comparison between signed and unsigned.
Fix compiler warnings in coreparse - printf's "%p" wants void*.
Use handy inline function instead of hairy expression.
Shrink symbols on x86-64 by putting tls-index in the header.

Using the upper 4 bytes of the header makes symbols take up
6 words instead of 8, reducing the initial core by 565KB.

The patch could theoretically be applied for 32-bit builds,
but using a 2-byte index limits the TLS_SIZE to 2^14 words.
This is sufficient at present, but I wouldn't want to undo
the space savings if it is decided that TLS_SIZE should
be enlarged by a factor of 8 or more in the future.

In C, tls_index_of() should be used in lieu of sym->tls_index.
This is defined to be the constant 0 for non-threaded builds,
so eliminates #ifdef LISP_FEATURE_SB_THREAD in three places.
Rearrange and fix whitespace.
Improve readability
Unbreak builds without sb-thread feature
compiler/sparc/subprim: Change LENGTH/LIST to use non-continuable errors.

  * There's a small stack of more to be done here, but the use of
continuable errors, while supported at least somewhat by the
runtime, simply isn't supported by the debugger, so there's no
point in using them over the non-continuable errors...  And these
are the last two use sites for continuable errors on SPARC.

  * There are a few more opportunities for excellence here, but
there are some fiddly little details involved, so they call for
separate commits.
compiler/sparc/macros: Kill the continuable-error trap noise.

  * We don't use continuable error traps anywhere, and the
debugger doesn't support them.  If anyone wants to resurrect such
support (and I can see it as a possibility), they can either dig
the old code out of source control or re-derive it themselves.
Move SPARC over to slimmed-down EMIT-ERROR-BREAK interface, part 1.

  * The prep-work has already been done in eliminating the
continuable error bits, now it's time for the first part of the
main show: adjusting the INTERFACE parts.

  * For this part we're just pushing a QUOTE from the guts of a
macro code generation function out to the call sites, matching the
other platforms that have already made this change.  We'll do the
actual implementation damage in part 2.
compiler/generic/array: Invert conditionals for EMIT-ERROR-BREAK changes.

  * This is the halfway point for these changes: Fully half of the
backends are on the new version of the interface while half are
still on the old version.

  * Instead of having the conditionals list the platforms that
have been updated (a list that can only grow), list the platforms
that have NOT been updated (a list that can be expected to shrink).
Move SPARC over to slimmed-down EMIT-ERROR-BREAK interface, part 2.

  * Now that the noisy touch-lots-of-files work has been done, we
can settle in to do the harder-to-validate bits that are entirely
contained within a single file.

  * Based somewhat on the PPC version in 1.0.28.16, with a
slightly different choice of implementation strategy, and a result
that hews closer to the code originally replaced.
compiler/sparc/subprim: Clean up a FIXME in LENGTH/LIST.

  * There's a longstanding FIXME in this code, due to it using two
type tests each time through the loop, even though one can only
ever trigger on the first iteration, and due to PPC being the only
other backend that does so.

  * Actually, it's worse than that: That type test that can only
trigger on the first iteration?  It can't, thanks to the VOP
:ARG-TYPES parameter...  Well, unless someone gets really careless
with their low-SAFETY code.

  * First, change the out-of-line error trap to use PTR rather
than OBJ.  Means the debugger can't always point out a variable at
fault, but also means that we only need the one error trap.  And,
as mentioned above, it'd take someone doing something broken at
low SAFETY for it to matter anyway.

  * Second, kill the inline error trap and its type test.

  * Third, do a partial unroll and loop rotation, putting the exit
test at the end so that we can do fall-through exit, and
duplicating it at the beginning so that we don't need to jump into
the middle of the loop body.

  * And the entire approach, with the exception of the use of
branch-delay slots, can also be done on PPC...  But not in this
commit.
Remove extra push/pop from alloc_tramp - no need to save r11 twice.
Undo my previous "fix" but save 2 bytes. Yay.
Fix two C warnings.
compiler/ppc/subprim: Apply most of the same LENGTH/LIST changes as on SPARC.

  * Second verse, not quite same as the first, because PPC doesn't
have branch-delay slots.

  * Move the error-trap out-of-line, remove the second type test,
rotate and partially unroll the loop so that the nromal exit just
falls out the bottom but we still don't have to branch into the
middle.

  * Justification and explanation is the same as for the SPARC
versions, not too many commits ago.