add `chain` method for convenience

I know it's not in the official spec, but for simple async operations where you want to wait for one promise to resolve before passing its value into another promise, a method like this might be useful. Without this, you have to nest calls to `Promise.new` inside one another, which feels much less readable to me than chaining them sequentially.

Also, it was great to meet you at Rubyconf, hope you had a good trip back from San Diego!
It would probably be good to pass an optional error lambda here too... mostly curious about whether this syntax is useful.

Maybe `chain` isn't the best function name, and maybe having the same class/instance method name is confusing. I guess what I really want is to do `Promise.new{ get_value }.then {|value| do_something_with(value) }` for the simple cases I have -- and maybe allow passing in an error lambda, but use `raise` and implicit return values instead of manually invoking `fulfill` and `reject`.