Make DBus a singleton.

All the proxies need dbus to initialize, so we are passing dbus around,
to make it easier to compile dbus conditionally, this patch makes it a
singleton so that the proxies can get dbus on their own.

Test: mma
Bug: 28800946

Change-Id: Idf062c843aa34a431c2201bae5b895dc1d0ea787
diff --git a/real_system_state.h b/real_system_state.h
index 071e3e0..bd51cb0 100644
--- a/real_system_state.h
+++ b/real_system_state.h
@@ -34,6 +34,7 @@
 #include "update_engine/common/prefs.h"
 #include "update_engine/connection_manager.h"
 #include "update_engine/daemon_state_interface.h"
+#include "update_engine/dbus_connection.h"
 #include "update_engine/p2p_manager.h"
 #include "update_engine/payload_state.h"
 #include "update_engine/shill_proxy.h"
@@ -49,7 +50,9 @@
  public:
   // Constructs all system objects that do not require separate initialization;
   // see Initialize() below for the remaining ones.
+  // TODO(senj): Remove this constructor once all proxies get DBus themselves.
   explicit RealSystemState(const scoped_refptr<dbus::Bus>& bus);
+  RealSystemState() : RealSystemState(DBusConnection::Get()->GetDBus()){};
   ~RealSystemState() override;
 
   // Initializes and sets systems objects that require an initialization