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/mock_store.h b/mock_store.h
index 6f21fd0..9220741 100644
--- a/mock_store.h
+++ b/mock_store.h
@@ -23,6 +23,7 @@
   MOCK_METHOD2(DeleteKey,
                bool(const std::string &group, const std::string &key));
   MOCK_METHOD1(DeleteGroup, bool(const std::string &group));
+  MOCK_METHOD1(SetHeader, bool(const std::string &header));
   MOCK_METHOD3(GetString, bool(const std::string &group,
                                const std::string &key,
                                std::string *value));