flimflam: revise multi-profile support to pin objects to a profile

Change the way profiles are managed: instead of binding a service
to the active profile at create time, bind it to a profile on first
load/save. Also add a Profile property to the service object and support
setting it via D-bus (potentially moving an entry from one profile to
another). Other objects are always written to a global profile (if any);
this includes devices, ipconfig, and global settings (e.g. OfflineMode).

As part of this change make the profile write logic per-profile so
multiple profiles may be pending simultaneously.  Also adds notifiers
for profile push/pop (used only by service now but could be used if
other objects need to be aware).

BUG=chromium-os:12948
TEST=manual:clear the global profile; login and join GoogleGuest; verify the entry is written to the user profile; logout and verify we disconnect; login again and verify we autoconnect to GoogleGuest; also use list-services to check Profile property and set-service-property to manually move profile binding of a service (checking raw profile data on disk)

Review URL: http://codereview.chromium.org/6731067

Change-Id: If30784060e8f65d091e82a0994dc6e2d99ac570d
7 files changed