nestablestub

**do not merge, conceptual PR only**

The real code lives over on https://github.com/Pomax/component-nester/blob/master/component.html, although this should be relocated into the brick component at some point. However, before we do that, some interesting questions arise.

* [ ] right now a compound component can try to fully wrap contained elements, so that listeners{e1,e2,e3,...} become the compound component listeners, and the same for broadcasts
* [ ] how do we deal with multiple same named listeners?
* [ ] how do we determine {wrapped elements} => {unified output} mapping?
 
Another interesting question is what this now models
* [ ] compound component
* [ ] "app as component" with internally linkable I/O
* [ ] "outer" channel link menu in designer + "inner" channel links so that wrapped components can broadcast but their events only fire/register "inside the compound component"?

Something that has not yet been implemented is how to deal with saving/publishing this kind of element. We probably want to save this as plain HTML the same way we do everything else, at which point the code for loading and rewiring might need to be extended.

Observations while trying to make this work:
* [ ] using `<content>` causes all kinds of magic behaviour with a composed DOM that we then can't easily tap into
* [ ] using `<shadow>` elements is a *must*
* [ ] using `<shadow>` allows finding "visible" DOM elements in `this.shadowRoots[this.localName]`.
* [ ] listener interception is relatively straight forward, through function wrapping
* [ ] broadcast interception is hard, due to the fact that we don't have a uniform broadcasting mechanism, and broadcast events are "global"
* [ ] the channel visualisation was never written with the notion that channel bindings might change after initial loading (as such on rebind I call `buildMenu()` on the ceci-channel-menu elements, which will require "real" code if we're okay with that. Right now it works, but is more demo than production)