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.