Promise composition

Added means of composing Promises by using `#zip` an `#flat_map`. Loosely based on scala's `Future#zip` and `Future#flat_map`. I hope I didn't mess up when `#execute` should be called - if I understand correctly in the case of `#zip` the Promises will be scheduled one by one unless someone schedules them all beforehand.
I do not have a better idea but the current name seems misleading to me, how does it relate to http://www.ruby-doc.org/core-2.1.0/Enumerable.html#method-i-flat_map ?