External procedurals

This adds support for representing external procedurals (.so, .ass and .rib) as IECore Objects and passing them to the Arnold, RenderMan and IECoreGL renderers. It will be used to implement https://github.com/ImageEngine/gaffer/issues/722.