Fix various details of the option parsing.

Setting OPTIND=1 allows reentrace to ts.  I don't have a good way illustrate,
but if you source ts twice, then the second time in you would carry forward the
old value of OPTIND.

Also update the parsing loop so that the option numbers are quoted.
Replace TS_TESTS_IN_SOURCE with `. ts .` construct

This replaces the kinda-weird TS_TESTS_IN_SOURCE with a new construct that
sources a file and marks it as a file that needs to be searched for test
functions.  A long road lead to this solution.

Perhaps the primary issue is detecting what files need to be searched.  In the
previous system, and in variant like it, the test file is searched for lines
that match a source pattern (ie 'source xyz' or '. xyz').  That seems easy
enough, but a problem arises when trying to parse the file name from such
lines; if you allow users to specify any file in any manner then you *must*
eval the lines to properly determine the first argument.  Examples:

    . "file/with spaces"
    . file/with\ spaces

Or even worse:

    name="with spaces"
    . file/"${name}"

Once you allow eval, suddenly you have another can of worms -- security, for
one, but more commonly silly things like command breaks.  Suddenly you need to
start detecting things like:

    . file; ls

As it stands the users must be consious of specifying one pattern, the test
pattern, when writing their files.  A second textual pattern felt very
burdensome and overall fraught with issues.

This new syntax bypasses all the issues by allowing the shell to do normal
argument processing and then hand the results to ts.  Adding a new way of
entering ts (now there are three) is actually a great way of doing this -- you
can't simply source ts earlier to get 'some other' function because that would
cause ts to run, and it's not so great to force users to implement their own
helper for this purpose.  The new syntax is reminiscent of it's wrapped
functionality, dot, and keeps all the internal state internal.