make popups more predictable

Related to https://github.com/ArcBees/GWTP/issues/554
I see. Shouldn't the child be notified in one way or another ir was moved to another slot when it's already visible?

Slot code is old and lacks a lot of tests, so your changes here are a good opportunity to write them. There are a couple use cases that should be tested here (and I mean real tests, not only human tests):
Consider `Parent A (PA) { is_visible; Slot A; Slot B } ; Parent B (PB) { is_not_visible ; Slot A } ; Child {}`
- Child is in PA.A. Child is **added** to PA.B: Need to think about which lifecycle methods must be called. I think `onHide` followed by `onReveal` makes sense.
- Child is in PA.A. Child is **set** to PA.B: Need to think about which lifecycle methods must be called. I think `onHide` followed by `onReveal` then fire `ResetPresentersEvent` makes sense.
- Child is in PA.A. Child is **added** to PB.A: Child.onHide() must be called.
- Child is in PA.A. Child is **set** to PB.A: Child.onHide() is called then ResetPresentersEvent is fired.
- Child is in PB.B. Child is **added** to PA.A: Child.onReveal() must be called.
- Child is in PB.B. Child is **set** to PA.A: Child.onReveal() must be called then ResetPresentersEvent is fired.