add intermediate `quote` form

Only used by the single-quote operator for now. Not sure whether it's
necessary to get the list form of quotes into the quote form or not.
fix quoting of strings and char literals
add environment, and make unknown symbol evals fail
fix bug for printing empty list
todo idea: '() as a subclass of list