New ShaderGroupBegin variant that takes a text description of a shader group

This is half the work to allow serialization of the set of Parameter, Shader,
and ConnectShaders calls that fully assemble a shader group.  Here is an
example:

    ShaderGroupBegin ("groupname", "surface",
                          "param float fin 3.14; " /*concatenate string*/
                          "shader a alayer;"
                          "shader b blayer;"
                          "connect alayer.f_out blayer.f_in;");

Add --group command to testshade so this can be tested and used from the
command line. Here's an example:

    testshade -v -group "param fin 3.14, shader a alayer, shader b blayer, connect alayer.f_out blayer.f_in"

(Commas are an allowed substitute for semicolons for statement separators,
and the last statement separator is optional if it's at the end of the
string; this makes it easier for command line use, where semicolons have
special meaning.)
Serialize a shader group specification by retrieving the "pickle" attribute
for the group. This will turn the full ShaderGroup specification into a
string in the same format that's accepted by the new ShaderGroupBegin
syntax.
Archiving shader groups.

1. shadingsys->archive_shadergroup(group,filename) will create an archive
file (tar, tar.gz, or zip, depending on the file extension) containing
a serialized description of the shader group as well as oso files for every
shader referenced in the group. Great for debugging!

2. SS attribute "archive_groupname", "archive_filename" will cause the
named group to be automatically archived to the given filename, right after
it is set up.

You can thus dump everything necessary to restore a shader group, even from
a renderer that has OSL buried deep within, by running with environment
variable OSL_OPTIONS="archive_groupname=mygroup,archive_filename=debug.tgz",
and then the archived oso files and shadergroup description can be
reconstituted to debug the shader from testshade or any other
debugging-conducive environment, which does not have to be the original
renderer.
Merge pull request #381 from lgritz/lg-pickle

Serialize/deserialize shader groups
Revisit and fix the "dlopen for DSO" issue with symbols LLVM can't find.

It was reported that although we took care of (almost all) function
lookups, that wasn't good enough because non-function symbols could also
be a problem. In particular, there were several ustrings referenced
externally.

The solution is just to declare them static in the functions where they
are used. I verified that it creates those static ustrings just once for
each shader, not on every shader execution. Also found a couple stray
functions I didn't catch before.

I also modified the testsuite runtest.py, so that it checks an
environment variable OSL_TESTSHADE_NAME, and if set, uses that to
override "testshade". This lets me run the full testsuite with
testshade_dso rather than testshade, verifying that we now have things
working. (Well, as best as can be verified by the coverage afforded by
the testsuite.)