Fixed initial unsortedness of PathListingWidgets.
Batched PlugLayout updates triggered by metadata changes.

Frequently several items change at once, so it's best to wait for them to be completed rather than update the UI multiple times.
Implemented drag-and-drop plug reording in BoxUI.

This meant replacing the _PlugPath class with a _PlugListing class which directly manipulates a DictPath to represent the available plugs and their order. This new representation will also make it easier to introduce artificial new levels into the plug listing when we come to introduce collapsible sections in the UI and need a means of representing them.