Added support for array metadata in OSLShader.
Simplified OSLShader::*Metadata() python return types.

Using dataToPython() to convert simple data types to their held types on return. This is in keeping with the return values for Contexts and Metadata elsewhere.
Added UI support for OSL "help", "label" and "divider" metadata entries.
WIP
Added UI refactoring todos.
Made ShaderUI use a PlugLayout for parameters.
Added "layout:widgetType" metadata entry.

This is used by the PlugLayout class to allow the type of PlugValueWidget being used to be overridden by Metadata. This will form the basis for the UIEditor specifying custom widget types, and for supporting OSL metadata for widget types.
Added support for OSL "widget" metadata.
Fixed GafferOSL for use with OSL prior to version 1.6.

Also added Python bindings exposing the OSL version.