asio: connection: add bus to ctor

Add a constructor parameter that accepts a bus-rvalue with a default
of `sdbusplus::bus::new_default`.  This was the previous behavior of
the single-parameter constructor but now allows any other
bus-constructing-function result to be used as a constructor parameter.

There was previously an alternative constructor that accepted an
`sd_bus*` raw pointer, but this required an awkward
`new_bus().release()` (or similar) call.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: Id49a007eb1bddb054d1ffc83b415feab4a33a33a
diff --git a/include/sdbusplus/asio/connection.hpp b/include/sdbusplus/asio/connection.hpp
index 57504c1..1ece736 100644
--- a/include/sdbusplus/asio/connection.hpp
+++ b/include/sdbusplus/asio/connection.hpp
@@ -54,9 +54,11 @@
 class connection : public sdbusplus::bus_t
 {
   public:
-    // default to system bus
-    connection(boost::asio::io_context& io) :
-        sdbusplus::bus_t(sdbusplus::bus::new_default()), io_(io),
+    // default to default bus
+    explicit connection(
+        boost::asio::io_context& io,
+        sdbusplus::bus_t&& bus = sdbusplus::bus::new_default()) :
+        sdbusplus::bus_t(std::move(bus)), io_(io),
         socket(io_.get_executor(), get_fd()), timer(io_.get_executor())
     {
         read_immediate();