Better management of different shader types

This pull request does two things :

- Maintains renderer prefixes (e.g "ri:", "ai:") for shaders when they're connected in a network. This is critical to avoiding warnings from IECoreGL when given non-prefixed shaders it doesn't understand. The number of such warnings for some production assets was enough to slow Maya to a crawl.
- Changes the attribute used to store shader assignments from "surface" to "rendererPrefix:shaderType" (e.g. "ri:surface"). This allows shaders for different renderers to coexist peacefully in the same data stream.

It's pretty critical that we get the former commit deployed, so if anyone feels that the latter needs further discussion I'd suggest cherry-picking the first one in the meantime.