ianhanniballake Move all updates singleThreadContext
Avoid ConcurrentModificationException due to multiple threads touching the same HashMap.

Fatal Exception: java.util.ConcurrentModificationException
       at java.util.HashMap$HashIterator.nextNode(HashMap.java:1441)
       at java.util.HashMap$EntryIterator.next(HashMap.java:1475)
       at java.util.HashMap$EntryIterator.next(HashMap.java:1475)
       at com.google.android.apps.muzei.ChooseProviderViewModel$mutableProviders$1$currentArtworkByProviderObserver$1.onChanged(ChooseProviderViewModel.kt:245)
       at com.google.android.apps.muzei.ChooseProviderViewModel$mutableProviders$1$currentArtworkByProviderObserver$1.onChanged(ChooseProviderViewModel.kt:166)
       at android.arch.lifecycle.LiveData.considerNotify(LiveData.java:109)
       at android.arch.lifecycle.LiveData.dispatchingValue(LiveData.java:121)
       at android.arch.lifecycle.LiveData.access$400(LiveData.java:59)
       at android.arch.lifecycle.LiveData$ObserverWrapper.activeStateChanged(LiveData.java:416)
       at android.arch.lifecycle.LiveData.observeForever(LiveData.java:207)
       at com.google.android.apps.muzei.ChooseProviderViewModel$mutableProviders$1.startObserving(ChooseProviderViewModel.kt:214)
       at com.google.android.apps.muzei.ChooseProviderViewModel$mutableProviders$1$allProvidersObserver$1$1$1.doResume(ChooseProviderViewModel.kt:173)
       at kotlin.coroutines.experimental.jvm.internal.CoroutineImpl.resume(CoroutineImpl.kt:42)
Latest commit 9dbec2f Sep 25, 2018