shill: Add Profile and Manager UpdateDevice support.

UpdateDevice persists Devices into profiles. It's similar to UpdateService,
however, only the topmost DefaultProfile handles UpdateDevice. Use UpdateDevice
to persist Device's Enabled and Cellular's AllowRoaming properties. Remove now
unused Manager::SaveActiveProfile method to avoid confusion.

BUG=chrome-os-partner:10178,chromium-os:32230
TEST=unit tests

Change-Id: I1d293fa84e0bce3156943e8e9d313fc98facbde1
Reviewed-on: https://gerrit.chromium.org/gerrit/26405
Tested-by: Darin Petkov <petkov@chromium.org>
Reviewed-by: Paul Stewart <pstew@chromium.org>
Reviewed-by: Ben Chan <benchan@chromium.org>
Commit-Ready: Ben Chan <benchan@chromium.org>
diff --git a/profile.h b/profile.h
index daa171d..8096aba 100644
--- a/profile.h
+++ b/profile.h
@@ -112,6 +112,12 @@
   std::vector<std::string> EnumerateAvailableServices(Error *error);
   std::vector<std::string> EnumerateEntries(Error *error);
 
+  // Clobbers persisted notion of |device| with data from |device|. Returns true
+  // if |device| was found and updated, false otherwise. The base implementation
+  // always returns false -- currently devices are persisted only in
+  // DefaultProfile.
+  virtual bool UpdateDevice(const DeviceRefPtr &device);
+
   // Write all in-memory state to disk via |storage_|.
   virtual bool Save();