feat(modal): dispatch show/hide events (also for derivative components)

The primary events are not fired until the enter / leave animations are
complete, but there are accompanying "before" counterparts in case an
implementor does want to know when the process is starting.
feat(tooltip): dispatch show/hide events (also for derivative components)