zlisp: add symbolp function.

* lib/zile/Symbol.lua (symbolp): New function, for detecting
Symbol objects.
(methods): Export it.
* lib/zile/zlisp.lua (symbolp): Re-export it.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
symbol: use a shared metatable for all Symbol objects.

* lib/zile/Symbol.lua (metatable): Factor out of `make_symbol`.
(metatable.__index): Do plist lookups using `self` rather than an
upvalue.
(metatable.__newindex): Lazily initialise `plist` rather than
adding and emply plist to every symbol unconditionally.
(keynames): Set of `__newindex` keys that work directly on the
symbol object.
(metatable.__newindex): Use it, to avoid falling through to the
`plist` unnecessarily.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
zlisp: generate AST nodes correctly for `quote`.

* lib/zile/zlisp.lua (parse): When pushing a quoted node onto
the AST, it goes at the front of the cons list!

Signed-off-by: Gary V. Vaughan <gary@gnu.org>