Create a framework for managing user interface components in iframes (v2)

This is @mrmr1993's work from #1385, simplified.

@mrmr1993:  Could you take a look at this?
- The main change from #1385 is simplification.  And the main simplifications are:
  - Handle messages using a single function (so, no add/remove listeners).
  - Can no longer change shown/hidden styling at all.
- Flash iframe border when it is re-activated.
- Probably many other small things.

Modulo any mistakes I've made refactoring your work... Can you live with this, @mrmr1993?

If so, I'll add it to `post-1.46` (without demo code), and you can take a look at using it to host the vomnibar.  I'm holding off merging #1383 until we have this resolved.  So `post-1.46` is still alive.