Make event time explicit, add imperative event adapter

This still needs:

* [ ] Unit tests for imperative event adapter
* [ ] Unit tests for MulticastSource

Add fromEvent adapter for EventTarget/EventEmitter

New MulticastSource that creates iterable queues with a "shared" view
of items.  Auto-activates when first queue is created, and auto
disposes when all active queues are ended

Make time explicit. Every event is tagged with a time, and every
stream with a scheduler. Refactor time-based combinators to use tagged
time whenenver possible.

Fix Stream.prototype.zipWith. Remove Stream.prototype.on for now

Use stream.beget to preserve scheduler

Improve periodic: its events always have exactly the periodic time,
even if they are emitted at a slightly different real world time (ie,
when a real world clock is being used).  Remove unused scheduler
methods.

Move default scheduler to Stream