There are 3 issues this tackles:
- we were keeping a reference to the notification we added (this.notice),
which kept windows alive.
- we had the CleanupManager keep a reference to our close method, which kept
a reference to us, which kept a reference to the window.
- the fact that we use timeouts to call this.close() in 2 places meant
this.close would get called multiple times, which meant we errored out on
later occasions, because various things had been nulled out. This tidies up
the timeouts when cleanup is called to avoid re-entrancy/errors/leaks.
MozReview-Commit-ID: EYvK7bQEh3X