First step to bringing basic promises implementation inline with Promises/A+ 1.1
- removed sync queue trampoline as then now requires a completely new tick
- only access x.then once
- bunch of fixes for caller context