Smarter MockUI

This fixes test failures I'm seeing on master by avoiding arbitrary setTimeouts.
We generally use `lib/ext/promise.js` instead of `RSVP` directly.