Implement new v0.10 architecture

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 coveraage.
Fix takeUntil, add unit test
Ensure functions are called without exposing internals via
Rename Sink mixin to Pipe, since that's what it does
Merge pull request #63 from cujojs/v0.10-merge

Implement new v0.10 architecture