shill: Allow creation and push of DefaultProfile

Add the ability to create a DefaultProfile whose name is not
"default".  Add the ability to push a DefaultProfile atop
another DefaultProfile in the Manager.  This will enable
autotests to run that can test interactions between profiles
while a user is not logged in.

BUG=chromium-os:24461
TEST=New unit tests; autotests to come

Change-Id: Iccfcff6ec613cf0a8ac55c11c9cc1efac8237807
Reviewed-on: https://gerrit.chromium.org/gerrit/19287
Reviewed-by: Paul Stewart <pstew@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
Commit-Ready: Paul Stewart <pstew@chromium.org>
diff --git a/default_profile.h b/default_profile.h
index 9c5bfb6..18f2f57 100644
--- a/default_profile.h
+++ b/default_profile.h
@@ -24,9 +24,12 @@
 
 class DefaultProfile : public Profile {
  public:
+  static const char kDefaultId[];
+
   DefaultProfile(ControlInterface *control,
                  Manager *manager,
                  const FilePath &storage_path,
+                 const std::string &profile_id,
                  const Manager::Properties &manager_props);
   virtual ~DefaultProfile();
 
@@ -53,7 +56,6 @@
   FRIEND_TEST(DefaultProfileTest, LoadManagerProperties);
   FRIEND_TEST(DefaultProfileTest, Save);
 
-  static const char kDefaultId[];
   static const char kStorageId[];
   static const char kStorageCheckPortalList[];
   static const char kStorageHostName[];
@@ -63,6 +65,7 @@
   static const char kStoragePortalURL[];
 
   const FilePath storage_path_;
+  const std::string profile_id_;
   const Manager::Properties &props_;
 
   DISALLOW_COPY_AND_ASSIGN(DefaultProfile);