stream-terpri should return NIL not the newline character.
stream-read-char-no-hang should have a default method. The implementation is not shown in the Gray stream protocol example, but the existence of the default method is mentioned in the description for the generic.
Some small tweaks.