RenderMan coshaders

This pull request implements support for building networks of RenderMan coshaders, addressing issue #39. Coshader parameters are represented simply as the base Plug class, because conceptually they're just a connection which doesn't provide data directly. RenderManShader::acceptsInput() is implemented to ensure that only other RenderManShaders are connected as coshader inputs, and that shaders cannot be connected to inputs other than those representing coshader parameters.

Also took the opportunity to tidy up existing shader ui registrations while defining the ui for the RenderManShader.