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.