Force encryption migration if the device supports ARC.

This CL includes following changes:

* Add |is_forcing_dircrypto| to UserContext to pass the configuration
  from ExistingUserController to CryptohomeAuthenticator.
  The flag affects MountParameter for MountEx API.
* If a regular user signs in and ARC is available, ExistingUserController
  flips the flag to ensure that the cryptohome is encrypted in
  dircrypto.
* Add a user-facing flag to enable the migration, since the backend of
  the migration procedure is not completely ready yet.
* If a user choose "SKIP" in the migration screen, the screen handler
  let the user sign in by using previously-used UserContext and LoginPerformer,
  and dripping the |is_forcing_dircrypto| flag.

BUG=706017
TEST=manually tested following cases on samus with ARC support.
1) Enable the flag in owner profile, create a cryptohome in ecryptfs, and sign in to the new profile. It showed migration screen.
2) Clicking "SKIP" on the screen shows the user's desktop.
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:closure_compilation

Review-Url: https://codereview.chromium.org/2798023005
Cr-Commit-Position: refs/heads/master@{#462773}
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 9d7797b5..d52f73551 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -2196,6 +2196,10 @@
     {"enable-native-cups", flag_descriptions::kEnableNativeCupsName,
      flag_descriptions::kEnableNativeCupsDescription, kOsCrOS,
      SINGLE_VALUE_TYPE(switches::kEnableNativeCups)},
+    {"enable-encryption-migration",
+     flag_descriptions::kEnableEncryptionMigrationName,
+     flag_descriptions::kEnableEncryptionMigrationDescription, kOsCrOS,
+     SINGLE_VALUE_TYPE(chromeos::switches::kEnableEncryptionMigration)},
 #endif  // OS_CHROMEOS
 #if !defined(OS_ANDROID) && !defined(OS_IOS) && defined(GOOGLE_CHROME_BUILD)
     {"enable-google-branded-context-menu",