Further separates loom from DOM components.

This commit introduces a new base class fort DOM components (`dom/component/gadget`). The previous functionality of `dom/component/widget` has been split and all loom related code has been retained in the original module while non-loom code has been transferred to `dom/component/gadget`.

This paves the way for non-loom based web components (I'm looking at you react and possibly even angular) to be able to interract cleanly with troop components without adding any extra bloat.