Implement list builtin
Implement cond builtin
Fix bug in reading files larger than 1KB
Use regular libedit interface, adding history file support
Update changelog
Optional caching in bin/funlisp
Implement caching for symbols & strings
Add capability to cache symbols and strings, unused
Unify the string and symbol types

Use the same struct, and similar type functions.
Delete lisp_error object
Add some tests to improve coverage
Add test for macros, fix resulting bug

In the bug, quasiquote would modify lists rather than producing new
ones. In this commit, we add a fix which creates a new list as we
quasiquote, rather than modifying the one passed in. This is more
expensive. Optimally, we'd only re-allocate nodes we have to change, but
this is the good enough solution.
Refactor lisp_eval_list() to use new utility, lisp_map()
add more tests and a few bugfixes
Update changelog
Use lists for call arguments, and ensure lists are well formed in function calls
lisp_eval_list is no longer recursive
Add map test and bevy of bugfixes
Ensure coverage for tests is accurate