Initial commit
Use safer signals.
Merge pull request #1 from troopjs/feature/signals

Use safer signals.
Expose `woven` on widgets.
Add `woven` tests.
Merge pull request #2 from troopjs/woven

Woven