ShaderGroup serialize/deserialize

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.)