shill: Implement CreateProfile, PushProfile, PopProfile

Collateral fixes: Profiles now create a header at the beginning
of the file, and this feature is plumbed down through key_file_store
and glib.  InitStorage can be configured to fail if the profile
already exists/doesn't yet exist.

BUG=chromium-os:22221
TEST=New unit tests

Change-Id: Ie7c2d0dee97891b7850cec75b74052fce77eee8f
Reviewed-on: https://gerrit.chromium.org/gerrit/10884
Reviewed-by: mukesh agrawal <quiche@chromium.org>
Reviewed-by: Darin Petkov <petkov@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
diff --git a/default_profile.h b/default_profile.h
index 7291fcd..04b1ae6 100644
--- a/default_profile.h
+++ b/default_profile.h
@@ -35,6 +35,7 @@
   // Returns true on success, false on failure.
   virtual bool Save();
 
+ protected:
   // Sets |path| to the persistent store file path for the default, global
   // profile. Returns true on success, and false if unable to determine an
   // appropriate file location.
@@ -44,6 +45,7 @@
 
  private:
   FRIEND_TEST(DefaultProfileTest, Save);
+  FRIEND_TEST(DefaultProfileTest, GetStoragePath);
 
   static const char kDefaultId[];
   static const char kStorageId[];