#21: custom STASH interface

This implements part of the requirement for a UM STASH interface, through three main components:
* a base class for 'summary' widgets which both the STASH interface and 'normal' interfaces can use
* a "third party plugin" library containing the bulk of the code for the STASH interface
* a UM-only control piece of code (not for this repository)

The rest of the work in this pull request, apart from extending the base functionality of the summary base class, has been to optimise rose config-edit for operations on sections (Add/Remove/Copy).

Some code has been reviewed already, in an informal fashion - however, this pull request should be treated as potentially buggy, until we say otherwise.

@arjclark, please review.