Extract configurable core, Promise, and ArrayPromise based on previous work in when3-proto, but simpler now
Promise and ArrayPromise working now. Reimplemented when.* and other modules using Promise and ArrayPromise. Update tests
Fix ArrayPromise flatMap
Fix ArrayPromise.resolve. Extract timers to module, and allow timer impl to be supplied to makePromise. Work around weird case where buster can't handle a returned promise that resolves to undefined.
Fix promise.timeout
Prep for new monitoring by removing existing monitor integration points in makePromise
Refactor and simplify monitor. Automatic monitor rendezvous still disabled, will be added in a slightly new form soon
Update deferred.resolve/reject to return undefined. Simplify cancelable
Add JSDoc. Use any for concat. Add promise.else, promise.throw, promise.progress
Reorder Promise.js, group related functions.  Add deprecation warnings.  Appease JSHint
Remove unused var
Start working on handler-based promises-are-proxies approach
Finish handler-based promise prototype
Revise promise hierarchy, add new BasePromise that accepts a handler
Revise promise hierarchy for easier prototype inheritance
Switch to task objects for enqueue future tasks to avoid closures and reduce memory usage
Add jsdoc
Make when.reject reject verbatim
Add when3 branch to travis
Remove promise.throw until we find real use cases. See #242. Refactor runHandlers to use task objects, removing more closures. Add orElse alias for promise.else