Found a few typos and bugs in the doc_example.sh namespace.  After looking some more, I realize I'm going to need to fully proof this namespace and probably compare actual docker output to ensure my help docs aren't wrong.  Which is a job for another day...
Finished the string_IndexOf wrapper.  Need to write test cases and tune it.
Started writing tests for IndexOf, but I now see a good reason for core_StoreByRef so that'll be added first.
Added a by-ref function after all.  Should prove useful.  Made test cases for it.  Might need more.
Added some tests for indexof, need more.  Need to add tests for the new -a / --any switch on core_ToolExists.  In hindsight, I won't use it for what I thought, but I could see how it might be useful in other situations and the performance hit should be almost zero.  Need to check out the TODO list and probably focus on building a usage tag next.
Ok, so... found a few problems in the test scripts for core_getopts and had to fix those.  Testing functions weren't reporting correctly so things were passing that shouldn't.  The actual core_getopts function had a couple problems that needed fixed: compacted short option handling, and a break where a return 0 should have been.  Finished the string_IndexOf tests.  In the process, discovered a real-world case (added to tests for core_getopts):  if the error suppression is signaled (with a leading colon) in long opts, and the first long opt requires a parameter (has a colon at the end), then the tokenization and string comparison messes up.  Finally, updated all the test scripts to set the first path entry to the tool directory for SBT, ensuring all test cases happen again the compiled tools.  When I start doing regression testing against various version of libs/tools this will come in handy.