Reland: "Sync: Support multiple setup UIs."

This reverts commit 06bbee4ce66d8827fd9c6a35f404fd21376f75a7.

The bug was caused by SupervisedUserService not releasing sync_blocker_ in Shutdown, as it should.

BUG=563721,620019
TBR=

Review-Url: https://codereview.chromium.org/2064183002
Cr-Commit-Position: refs/heads/master@{#401048}
diff --git a/chrome/browser/sync/profile_sync_service_android.cc b/chrome/browser/sync/profile_sync_service_android.cc
index 81d83b85..b77164f 100644
--- a/chrome/browser/sync/profile_sync_service_android.cc
+++ b/chrome/browser/sync/profile_sync_service_android.cc
@@ -186,7 +186,11 @@
     const JavaParamRef<jobject>& obj,
     jboolean in_progress) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
-  sync_service_->SetSetupInProgress(in_progress);
+  if (in_progress) {
+    sync_blocker_ = sync_service_->GetSetupInProgressHandle();
+  } else {
+    sync_blocker_.reset();
+  }
 }
 
 jboolean ProfileSyncServiceAndroid::IsFirstSetupComplete(