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.