Refactored the slot mechanism so that they are now callable functions instead of objects exposing a "run" method. This should allow Slot-unaware code to integrate with the widget system easily.
The graphical example is now also richer and uses PureCSS for styling.
Both Signal and Slot are now callables (functions).  For now, specifying inputType and outputType for the signals/slots is removed. Contract checking should likely be done in a different layer.
Internal APIs have been refactored and streamlined. Signals and Slots are now lazily initialized when required.

The example view now generates three sets of widgets and demonstrates that they are decoupled from one another. The composition layer uses a connect() helper function to express relationships between signals and slots.