WIP: Allow staging multiple elements in `bst shell`
Description
This makes changes to internal APIs, ABI and the CLI to make it possible to stage multiple elements.
Defining a pseudo-element that depended on all the elements on the CLI was considered over changing internal APIs, but the API surface of Element was too large to make a convincing mock and would have been at least as much effort.
Changes proposed in this merge request:
- Add 
BST_GRANULAR_STAGEflag for Elements to set if they support staging dependencies, running integration commands and other staging operations individually rather than all at once inElement.stage(). - Port staging logic to prefer to call multiple staging methods if 
BST_GRANULAR_STAGEis set. - Port core Elements to support 
BST_GRANULAR_STAGE. - Move shell set-up code out of Element into Stream.
 - Make 
Stream.shellsupport multiple elements - Add 
-eflag tobst shellCLI to specify multiple elements. 
This merge request, when approved, will close issue/bug: #422
CHANGELOG/Release Notes
- Initial WIP version, some comments and checking for having been passed no elements are yet to be addressed.
 - Element checking, resolve WIP comments and update 
NEWS. - Fixed a rebasing error and lint warnings.
 
Edited  by Jürg Billeter