Update Promise

- Promises/A+ compliance
- basic tests
I was trying to update ypromise to make it work with iterables and I realized that `slice.call(arrayLike)` is not enough. For example `slice.call(true)` returns `[]` when it should throw a TypeError. We'd probably need something like `Array.from`, but then the polyfill in es-shims doesn't support iterables... https://github.com/es-shims/Array.from.

So for now I think I'll be sticking to just arrays.