Initial implementation of Promises.all, .any, .none, and .one class methods

A `Promise.all` method was originally proposed by @gdo in Issue #80. This request was later echoed by @dinshaw when he and I met at RubyConf 2014. @dinshaw provided [spike code](https://github.com/dinshaw/promises/blob/master/lib/promise.rb#L5) with [tests](https://github.com/dinshaw/promises/blob/master/spec/promise_spec.rb#L140) indicating one possible implementation.

This PR implements four aggregating methods: `all`, `any`, `none`, and `one` that provide behavior based on the similarly-named methods in Ruby's [Ennumerable](http://ruby-doc.org/core-2.1.5/Enumerable.html) module. It generalizes that behavior in an `aggregate` method that could (potentially) be extended and enhanced.
I thought about doing zip this way, but it seems to me like this locks up a thread for no good reason (at least in some cases)