Editable Plug UIs for Boxes

This implements the beginning of a UI editor for creating custom Box UIs as required by #739. Currently the following is supported :

- Renaming plugs
- Reordering plugs with drag and drop
- Adding dividers below plugs
- Setting tooltips for plugs and for the node itself

This required various supporting code :

- Signalling on metadata changes, and the ability to store per-instance metadata on Boxes
- A new metadata-driven PlugLayout class for creating UIs representing plugs. This will eventually replace the internals of the CompoundPlugValueWidget, but not before we've got a few things worked out.
- Many small fixes and additions to the existing UI components