Cycles like #0=(a #1=(#0#) #1#) with an inner cycle looping back to
an outer cycle would cause infinite loops. We fix these by marking
objects as we patch reader labels, then clearing the marks.
Without this, if SEXP_USE_FINALIZERS=0, constructing output string ports
without closing them would leak memory. SEXP_USE_FINALIZERS=0 still
requires caution when working with file-backed ports.
- SEXP_STACK had an off by one sexp_type_field_len_base past the top of stack
- SEXP_EXCEPTION claimed 6 slots but only 5 were present
- sexp_type_struct should have had "dl" slot at end