free_list would only free the memory of the items and not removing them from the list, i.e. lefting dangling pointers. We can fix it changing the loop. We could also drop the check in configure.ac for SIMPLEQ_FOREACH_SAFE eventually since we're not using it anymore, but I'll leave it in place for a bit still.
This adds a parser/formatter for lisp-style lists. It parses strings containing a single list of atoms. The grammar is '(' atoms* ')' an atom can be a string, keyword, symbol or a number.