you're right, this is mostly an extra and not a replacement (yet).  in part because it started as a proposal, but got very usable.  now that most of the other parts are merged, i'll do a rebase and rework most of this to better integrate with the rest.

1. I can replace all `selftest()` functions, no problem.   currently both `print()` and `io.write()` pass through, and should be avoided in test functions; if some feedback is desired, the framework stores any return values and optionally displays at the end, even if the test passed.  I could add some patching to `print()`, or better expose a `test.log()`.  probably should also change the report functions (of links, apps, etc.) to return strings instead of directly printing... or conversely, that's a good argument in favor of patching `print()`

1. i think it's easy to add shebangs to the testfiles, and modify `make test` to just execute them.  Still, while developing it's much nice to run big subsets of tests, so i'd like to keep that option.  it's the same option that allows the code to declaratively specify subtests either as a table or as a directory.