source: fire off worker thread even in "main thread mode"; add an un-threaded run function.
source, sources/*: make loop() protected (as well as a few other virtual functions).