Promise chaining and source metadata

I think this really improves both the power and ease of debugging of promises. I'm curious what you think.

Not sure about the name `chain`, considered `bind` as well but thought that may be confusing.