Moved Metadata internals to anonymous namespace.

We don't want to expose them to the outside world.
Simplified Serialisation implementation.

We had nearly-identical copies of the code for iterating the root children and for iterating the children during walk(). Now all the work is done in walk(). This also means that postHierarchy() and postScript() and now called properly for the root.
Removed python/GafferUI/Metadata.py.

It was no longer imported by GafferUI/__init__.py since being replaced by Gaffer::Metadata in C++, but the file hadn't been removed as it should have.
Implemented per-instance Metadata for all Nodes and Plugs.

This will allow custom UI's to be defined for nodes other than Boxes.
Reimplemented per-instance Box metadata with new general functionality.

The methods on the Box are now deprecated and will be removed in future.
Converted BoxEditor into a generic UIEditor.

This allows the user plugs for any node to be given UI customisations.