Protect against infinite recursion in focusOverlay.

An easy way to repro the infinite recursion is to create multiple _opened_
overlays, and dismiss them at the same time (toasts).

Here's what's happening. Say there are two overlays (A, and B), that were
dismissed at the same time - and that their transitions end within the same
run loop tick:

 * `A.transitionend`:
   * Removed from `overlays`.
   * Calls `applyFocus`, which calls `focusOverlay`.
 * `focusOverlay` calls `B.applyFocus`:
   * `B.closed == false`, so `focusOverlay` is called again.
   * ...recurse.

The call to `async` lets the `overlays` stack resolve before showing the
next one.