Fixed StandardNodeGadget nodule positioning.

When the content width was less than the minimum width, the nodules were being positioned inside the frame rather than on the edges. This only affected nodules on the left and right side of frame and so had gone unnoticed.
Added failing test for BoxUI nodule positioning.

We want the positioning to be based on the tangents of the internal connections.
Moved Metadata class from GafferUI to Gaffer.

It doesn't have any dependencies on code in GafferUI and it is useful outside of UI contexts - for instance in the documentation generation code.
Implemented per-instance metadata for Box nodes.

Since each Box may be created for a different purpose, and have different plugs to any other Box, it doesn't make sense for them to have static metadata entries. The Box::setPlugMetadata() method therefore allows metadata to be set on a per-plug-per-node basis. This will provide the basis for the user to make further customisations to Boxes, like setting descriptions for plugs and so on.
Made Box nodule positions match internal nodule positions

This means that, for instance, shader inputs to boxes which are connected internally to shader assignments now appear on the left hand side.

Fixes #608.
Merge pull request #703 from johnhaddon/boxMetadata

Box metadata and nodule positioning