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/store_interface.h b/store_interface.h
index 59c30fa..24a6d37 100644
--- a/store_interface.h
+++ b/store_interface.h
@@ -31,6 +31,9 @@
   // Deletes |group|. Returns true on success.
   virtual bool DeleteGroup(const std::string &group) = 0;
 
+  // Sets a descriptive header on the key file.
+  virtual bool SetHeader(const std::string &header) = 0;
+
   // Gets a string |value| associated with |group|:|key|. Returns true on
   // success and false on failure (including when |group|:|key| is not present
   // in the store).