Update Promise

- Promises/A+ compliance
- basic tests
They don't handle iterable objects either. We're sure that's a bug in the real-life implementation? If so, kudos for finding this, and it's not hard for us to do right.