Add sticky metadata editor; clean up dispatcher

The dispatcher wasn't explicitly calling "remove" on views, giving us no
way to disengage global events.  We created global events to implement
the "sticky" metadata editor (emulating the
as-yet-unsupported-by-browsers "position: sticky"), so refactor dispatch
to properly clean those up.