Share logic between READ-LIST/READ-DELIMITED-LIST and tweak the reader a bit.

*READ-SUPPRESS* doesn't cons lists any more. It used to cons but return NIL.
This change should be invisible to users. CLHS says of *READ-SUPPRESS*
"The standard syntax and its associated reader macros will not construct
any new objects." It then somewhat contradictorily says
"No matter what the value of *read-suppress*, parentheses still continue
to delimit and construct lists" which should be construed to mean that
parentheses syntactically construct lists, not allocate them.