fix(tooltip): memory leak on show/hide

Note that this requires #2918 (the first commit in this PR).

Create a new child scope and retain a reference to it so that it can
be destroyed when the tooltip DOM is removed.

Fixes #2709