Trampoline-based promise chaining (with reduced nextTick usage)

Continued from #87. Sorry about the monolithic commit; I started from an empty file and built up from there.