Optimize nextTick with catch and re-tick

This is submitted to compete with #195, pending a benchmark to compare the approaches.

This comes from a fork I did for Montage, but have since removed, https://github.com/montagejs/montage/blob/601f849e86150f427ebe49bef8317b3fcf4488f2/core/next-tick.js#L61-L96