Widget communication

Implements a Promise-based widget communication system.