Fix multithread bug: Reset _run_args, etc.

Problem: Imagine executing Script.run for a Script that returns
$1 (i.e., its first parameter). $1 is a substring of _run_args.
_run_args is a member of Script. Script.run is multithread-safe
(it's an "exclusive" handler, so at most one Script.run can run
at a time). But we didn't reset _run_args at the end. So: the
return value of Script.run shared memory with Script::_run_args.
The return value is manipulated by clickfs, and eventually
dereferenced and freed, OUTSIDE the configuration lock. But
Script::_run_args is reset the next time Script runs, which
might be concurrent! Crash.

Derrick Pallas reported the problem and helped narrow it down.
Add more String methods for managing sharing.

- String::data_shared: is_shared is a better name.
- String::is_stable: add it.
- String::unique: returns a new copy of *this if *this
  is_shared() && !is_stable(). (Maybe unique_or_stable
  would be a better name?)
Fix the shared-string handler problem better.

This fix would catch problems in other exclusive handlers.