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.
Correct. It does lose all information relating to the results of the aggregated promises as well as any failures. This is the use case I discussed in San Diego was OK with this. They simply wanted to hang behavior off of the success or failure of the collection. Basically an extension of the similar methods of Enumerable. When `all?` is called on an array you get a true or false, nothing else. I think this is the value of the `zip` method as an alternative. The `zip` method gives access to the aggregated results, these methods provide a simpler API.