Add Promise.zip

As discussed in #80. The only thing I'm wondering about is if `.zip` and `#zip` should take `*args` or an array. I chose `*args`, because it looks better when you convert to it from the other - `Promise.zip(*promises)` as opposed to `Promise.zip([promise1, promise2])` and looks very good for the simple case of `promise1.zip(promise2) { |(v1, v2)| ... }`.