Promise-A+: restore distinction deferred/promise

rename `promise` to `d` as appropriate
call `then` via `d.promise.then`
drop documentation of `thenable` status of deferreds
create a new array of thenables to pass to `Promise.All`
fix merge