Added show tags.
Allow for a little reacharound.
Differentiate between deactivation and disposal.

When a mode is deactivated, the buffer is sticking around, so the mode needs to
do extra work to leave the buffer in an unmodified state (removing transient
styles, etc.), it is then disposed after being deactivated. If it is disposed
without being deactivated then the buffer is going away too so the mode can
avoid doing extra work to clean the buffer up because no one will be there to
see it.

This logic gets propagated to behaviors as well, slightly differently in that
Behavior.didDeactivate() gets a bufferDisposing flag passed to it. That seemed
preferable to introducing the activate/deactivate/dispose trichotomy to
behaviors since their main lifecycle is activate/deactivate, not
construct/dispose.