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.