* use events for `VideoTrackRenderer`
* logger
* implemented visibility detection
* optimize code with 1 param debounce func
* stop pending visibility event when disposed
* clean up
* mark internal
* report to track
* call dispose on pub and track
* use internal events to receive visibility events
* clean up visibility for disposed track
* listen to track visibility events on pub
* re-design
* quickly re-enable
* clean up
* clean up