Reimplemented GafferUI.Metadata in C++.
Added node description to NodeGadget tooltips.

Fixes #157. That issue does discuss showing object counts and other things, of which I'm quite skeptical - I think it'll be too expensive. No doubt there is additional information which could go be displayed though, so the tooltip will also show a "summary" Metadata item if it has been registered - this will allow individual node types to add useful information by registering a dynamic Metadata item.
Added GafferUI.SpacerGadget class.

This just claims some space and doesn't render anything into it - useful for putting blank space into layouts.
Refactored StandardNodeGadget.

It now uses the new Spacer class to get the size behaviour it wants, rather than lots of funky logic in bound() and doRender(). It also always has containers for nodules on all sides, rather than just at the top/bottom or left/right - current nodule location is still dictated by the orientation parameter as before.
Added "nodeGadget:nodulePosition" Metadata.

This allows nodules to be placed arbitrarily on the left/right/bottom or top. Initially only the ShaderAssignment node makes use of this, placing the shader nodule on the left.

Fixes #82.
Updated NodeGadget tooltip to show node type rather than name.

The name is already visible in the NodeGraph anyway.
Merge pull request #693 from johnhaddon/sidePlugs

ShaderAssignment shader plug on left hand side