Added support for displaying RenderMan shader color parameters as plain numbers.

This can be achieved by setting the "parameterName.widget" annotation to a value of "number".
Added V3fVectorData and Color3fVectorData support to CompoundDataPlug.

This also meant adding a Color3fVectorDataPlug typedef for TypedObjectPlug. These will be used for RenderManShader array parameters.
Added support for RenderManShader array parameters.

Arrays are mapped to TypedObjectPlugs storing an entire array as a single value. We'll need to implement something else for coshader arrays, where we need a plug per array element.
Removed add/remove buttons for fixed length RenderManShader array parameters.

This involved adding a setSizeEditable() method to VectorDataWidget, which we can reuse later to fulfill feature requests to define sizeability of Cortex Parameters via userData.
Added support for coshader arrays in RenderManShader node.

Currently only really of use for fixed-length arrays - dynamically resizing arrays will come later.
Added support for arbitrary directions in CompoundNodule.

This allows the plugs to be ordered from right to left or bottom to top if desired.
Added basic UI setup for coshader arrays.
Added todo explaining why test is broken.
Added explicit storage of shader type on Shader::typePlug()

Before the derived classes were just using a standard hardcoded type which wasn't queryable. RenderManShader node now correctly uses a type of "ri:shader" rather than "ri:surface" for coshaders.
Disabling unwanted nodule for Shader::typePlug().
Prevented non-coshader connections into coshader plugs.
Fixed StandardNodeGadget::nodule() to correctly return nodules nested deeply within CompoundNodules.
Merge pull request #320 from johnhaddon/arrayShaderParameters

Array shader parameters