Fix for bug introduced with the ShadingSystemImpl PIMPL refactor.

Forgot this spot in SSI::attribute(), where it cast a ShadingSystemImpl*
to a ShadingSystem*, back when one was a subclass of the other. Now they
don't have a parent/child relationship. Yikes!

Because of the way optparser calls the system, I needed to add a couple
new overloaded varieties of attribute() to ShadingSystemImp.
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.