Add a method that checks a symbol for structural validity
according to some predetermined rule, and add it as an
extra rule for symbol-table validity that each symbol is
well-formed.
result2 was never used, although it was meant to be tested for. Renamed it to
result_add_2 (and result_add_1) instead to make it clearer and more obvious.
This wraps a symbol table, providing an interface matching its write side
(but not type-compatible, to avoid implicit casts between the two), and
journals modifcations such that callers can determine what changes were made
by code using this wrapper to add, update and remove symbols