Runloop

The listener for media query changes was attempting to propagate change events by hand, and without a runloop for deferred actions to run. This introduces runloop at the base of asynchronicity.

Some comments inline.