Change yield_method_call to be no-throw

The yield_method_call() would throw despite the inferred promise that it
would not, because the caller could attach an error_code to the yield
object. But that would only protect from the dbus method call itself.
When it came time to unpack the response, the read(...) method call
would throw if the received types did not match the expected types. Now,
the method forces you to pass in an error_code and it will always return
the appropriate error instead of throw.

Tested-by: run asio-example to see that it works as expected:
    # /tmp/asio-example
    voidBar() -> 42
    async_send callback
    error with async_send
    async_method_call callback
    /org/openbmc/control/bmc0
    /org/openbmc/control/flash/bmc
    fooYield(yield, 41)...
    ipmiInterface:execute(61)
    ipmi call returns OK!
    fooYield(yield, 41)...
    foo(41) -> 42
    async call to Properties.Get serialized via yield OK!
    foo(41) -> 42
    yielding call to foo OK! (-> 42)
    TestYieldFunction return 42
    yielding call to foo OK! (-> 42)
    yielding call to TestYieldFunction serialized via yield OK!
    async call to Properties.Get serialized via yield OK!
    *** tick ***
    *** tock ***
    *** tick ***
    *** tick ***
    *** tick ***
    *** tick ***
    *** tick ***

Change-Id: Iea43acd432107b4149f8e549310cfce2518cbc1d
Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
diff --git a/example/asio-example.cpp b/example/asio-example.cpp
index 0e20f41..2cd1323 100644
--- a/example/asio-example.cpp
+++ b/example/asio-example.cpp
@@ -28,7 +28,7 @@
     boost::system::error_code ec;
     std::cout << "fooYield(yield, " << test << ")...\n";
     int testCount = conn->yield_method_call<int>(
-        yield[ec], "xyz.openbmc_project.asio-test", "/xyz/openbmc_project/test",
+        yield, ec, "xyz.openbmc_project.asio-test", "/xyz/openbmc_project/test",
         "xyz.openbmc_project.test", "TestFunction", test);
     if (ec || testCount != (test + 1))
     {
@@ -58,12 +58,12 @@
 {
     boost::system::error_code ec;
     variant testValue;
-    conn->yield_method_call<>(yield[ec], "xyz.openbmc_project.asio-test",
+    conn->yield_method_call<>(yield, ec, "xyz.openbmc_project.asio-test",
                               "/xyz/openbmc_project/test",
                               "org.freedesktop.DBus.Properties", "Set",
                               "xyz.openbmc_project.test", "int", variant(24));
     testValue = conn->yield_method_call<variant>(
-        yield[ec], "xyz.openbmc_project.asio-test", "/xyz/openbmc_project/test",
+        yield, ec, "xyz.openbmc_project.asio-test", "/xyz/openbmc_project/test",
         "org.freedesktop.DBus.Properties", "Get", "xyz.openbmc_project.test",
         "int");
     if (!ec && std::get<int>(testValue) == 24)
@@ -75,11 +75,11 @@
         std::cout << "ec = " << ec << ": " << std::get<int>(testValue) << "\n";
     }
     conn->yield_method_call<void>(
-        yield[ec], "xyz.openbmc_project.asio-test", "/xyz/openbmc_project/test",
+        yield, ec, "xyz.openbmc_project.asio-test", "/xyz/openbmc_project/test",
         "org.freedesktop.DBus.Properties", "Set", "xyz.openbmc_project.test",
         "int", variant(42));
     testValue = conn->yield_method_call<variant>(
-        yield[ec], "xyz.openbmc_project.asio-test", "/xyz/openbmc_project/test",
+        yield, ec, "xyz.openbmc_project.asio-test", "/xyz/openbmc_project/test",
         "org.freedesktop.DBus.Properties", "Get", "xyz.openbmc_project.test",
         "int");
     if (!ec && std::get<int>(testValue) == 42)
@@ -149,7 +149,7 @@
     try
     {
         testValue = conn->yield_method_call<int>(
-            yield[ec], "xyz.openbmc_project.asio-test",
+            yield, ec, "xyz.openbmc_project.asio-test",
             "/xyz/openbmc_project/test", "xyz.openbmc_project.test",
             "TestYieldFunction", int(41));
     }