str lib: Comment str::concat better, fix numerous bugs in it.

It wasn't checking for nil params, had a (probably dead check) for reallocing
the original string (which would have violated strings being immutable).

But the best one was zapping ONLY the VAL_IS_PROTECTED flag from the result
register. In the right situation, if a literal was the last value to that
register, then the new str val would have been written
...and it would have been flagged protected, but not be a literal...

I'll bet that would have been a lot of FUN to debug.
Symtab: Fix an oops in dynamic loading that could cause a leak.

The problem was that after adding about 2 nodes to the list, new nodes would
just add themselves on top of the current 'top' node, but not become the new
top node. So the old ->next of the current 'top' would vanish into the void.
That's bad.
str lib: Simplify new sv + str code into try_make_sv.