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.