shill: Make nl80211 broadcast callback a list of callbacks.

This will allow multiple callbacks to be called when an nl80211 message
is received.  This allows a user to add a callback without displacing
others (e.g. disconnect metrics).

BUG=chromium-os:35468
TEST=unit tests, manual tests

Change-Id: I19d6cfac5754ea1d2a699de80d4465c49fec888c
Reviewed-on: https://gerrit.chromium.org/gerrit/36061
Reviewed-by: mukesh agrawal <quiche@chromium.org>
Commit-Ready: Wade Guthrie <wdg@google.com>
Tested-by: Wade Guthrie <wdg@google.com>
diff --git a/shill_daemon.cc b/shill_daemon.cc
index ea17007..be82903 100644
--- a/shill_daemon.cc
+++ b/shill_daemon.cc
@@ -46,6 +46,7 @@
                            config->GetRunDirectory(),
                            config->GetStorageDirectory(),
                            config->GetUserStorageDirectoryFormat())),
+      callback80211_output_(config80211_),
       callback80211_metrics_(config80211_, &metrics_) {
 }
 
@@ -108,8 +109,9 @@
       Config80211::kEventTypeRegulatory,
       Config80211::kEventTypeMlme };
 
-    // Install |callback80211_| in the Config80211 singleton.
-    callback80211_metrics_.InstallAsCallback();
+    // Install callbacks in the Config80211 singleton.
+    callback80211_output_.InstallAsBroadcastCallback();
+    callback80211_metrics_.InstallAsBroadcastCallback();
 
     for (size_t i = 0; i < arraysize(kEvents); i++) {
       config80211_->SubscribeToEvents(kEvents[i]);