Deferred: produce and consume standard thenables

A mere 41 bytes minified/gzipped... or so says Grunt.

I probably have style issues so thanks for pointing them out (or fix them in the relevant branch ;)).

Test coverage is probably not good enough but .when() is tested extensively at least.
We can always do it in following commits. This PR will need many more changes so it's good to check we're not breaking `pipe` in the process and afterwards we can try to migrate those tests to `then`.

At least we're able to run it via the Promises/A+ test suite.