setCurrentState(DESTROYED) called from main thread

Also address timing issues with bouncing calls between 2 handlers. In
particular, make sure that after a tile is DESTROYED, the state doesn't
change anymore due to leftover refreshState calls.

This sometimes would be caused as the result of an earlier tile added as
a callback on something that replies on add.

Make sure that tests that instantiate a QSTileImpl use the main looper
for the passed handler.

Test: atest TileServiceTest BooleanTileServiceTest
Test: manual, open QSCustomizer that destroys tiles
Test: atest SystemUITests
Change-Id: I77c61f743510cdcca54fa37cd26062a3c96bd649
Merged-In: I77c61f743510cdcca54fa37cd26062a3c96bd649
(cherry picked from commit 3744d134add89693e1241abda0de7750ab1f7638)
6 files changed