ShaderEditor widget owns a preview widget

This is done so I can easily hook up compile events directly to the
owner of the shader object.  Not sure if this is the cleanest way, but I
am going to roll with it for now.