Reader backward references and *print-circle* support

Reader and printer support for backward references, e.g.

     #1=(42 . #1#)

reads a seemingly infinite list `(42 42 42 42 42 ...)`

Also repeated apparently-uninterned symbols are recognized during print

For example

    (#1=#:foo #1# #1#)

is printed `(#:foo #:foo #:foo)` unless `*print-circle*` is set to `T`