shill: Notify upstart when shill is offline

Add an Upstart proxy, which can ask the upstart process to emit
events.  Invoke this event whenever the shill manager becomes
idle.

BUG=chromium:447796
TEST=Unit tests + manual:
Create a dummy "offline.conf" file in /etc/init which starts
with "start on shill-disconnected", and ensure that this script
is invoked if we disconnect the network.

Change-Id: Ide473098b7b93fd3da57b820e78b0a710c287cba
Reviewed-on: https://chromium-review.googlesource.com/241033
Reviewed-by: Zeping Qiu <zqiu@chromium.org>
Commit-Queue: Paul Stewart <pstew@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
diff --git a/proxy_factory.cc b/proxy_factory.cc
index 08a7e22..879b677 100644
--- a/proxy_factory.cc
+++ b/proxy_factory.cc
@@ -14,6 +14,7 @@
 #include "shill/supplicant/supplicant_interface_proxy.h"
 #include "shill/supplicant/supplicant_network_proxy.h"
 #include "shill/supplicant/supplicant_process_proxy.h"
+#include "shill/upstart/upstart_proxy.h"
 
 #if !defined(DISABLE_CELLULAR)
 #include "shill/cellular/dbus_objectmanager_proxy.h"
@@ -111,6 +112,10 @@
   return new DHCPCDProxy(GetConnection(), service);
 }
 
+UpstartProxyInterface *ProxyFactory::CreateUpstartProxy() {
+  return new UpstartProxy(GetConnection());
+}
+
 #if !defined(DISABLE_CELLULAR)
 
 DBusObjectManagerProxyInterface *ProxyFactory::CreateDBusObjectManagerProxy(