Persist/reload functions for saving structs between functions
Convert to assertions written in Igor only
Test results are collected for assertions rather than just for tests overall
Need to persist changes to the TSR before leaving a test
Use visible data folders instead of references to hidden ones

The hidden data folder idea is cute but was not offering any real advantages.
Disadvantages included more difficult debugging and maintenance, and the
difficulty of generating a sub-folders. These problems are alleviated by using
normal data folders that disappear when they are no longer needed.
TestListener interface, started
Add test suite start/end events
Add dummmy test listener functions
output functions, progress
Fix bug in wave extraction functions
Refactor output formats into an independent module

TestListeners can select different output formats by setting different
verbosity levels. The verbosity selects a particular output format, which
holds references to the functions to call. A TestPrinter subtype of a
TestListener is used to mix these output formats with different output
destinations by pointing TL_output to different functions.
Building library of assert/expect cases
Merge remote-tracking branch 'origin/merge_autotest' into merge_autotest
Add string equality functions and documentation
Update documentation to the Igor-based system
Adjust footnotes
Remove unneeded files from python-based version
Add test autodiscovery: functions prefixed with `utest*`
Add *_STREQ to known assertions list
total test runner now saves command to history