Implement new v0.10 architecture

This is a huge PR that effectively rebuilds the architecture from the ground up.  The diffs will likely be useless.

The new architecture is extremely performant, and has much lower processing and memory overhead.  It simplifies the code, and relies far less on promises.  More importantly, promise use is limited to ES6 APIs only--it doesn't use any when.js-specific APIs.  This commit still uses when.js internally, though (but only the ES6 APIs)

It's public-API-compatible with v0.9.

Some new APIs emerged, virtually for free, while working on the new architecture: slice, skip, skipWhile, skipUntil, timeslice.

Unit tests have all been ported, and new APIs have test coverage.

All examples are also working with no changes for compatibility.  I did change the circles demo, but only to simplify it, rather than for compatibility reasons.