Further separates loom from DOM components.

This commit introduces a new base class fort DOM components (`dom/component/base`). The previous functionality of `dom/component/widget` has been split and all loom related methods/handlers have been retained while non-loom methods/events have been transferred to `dom/component/base`.

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 bloat.