Reuse an already resolved promise in combinators

When passed an empty list, return an already resolved promise instead of
resolving a new promise every time
Correctly name the promise-extras submodule
Avoid a race condition when testing the rejection of every()

every() should be rejected immediately after any of the promises is
rejected for the first time. In order to avoid race conditions, use a
synchronously rejected reason and force the rest to be asynchronous
Use try...catch when retrieving obj.then in isPromise
Use utility functions to shorten Y.when()
Override soon() in multiple tests
Add test for some() resolving as fast as possible