Update Promise

- Promises/A+ compliance
- basic tests
It seems very particular. It only handles arrays then, right?

```js
Promise.all({ 0: '42', length: 1 }).catch(console.error.bind(console));
```