shill: make Manager::OnDarkSuspendImminent asynchronous

Use a ResultAggregator to make Manager::OnDarkSuspendImminent
asynchronous. This mirrors the approach used to make
Manager::OnSuspendImminent asynchronous in CL:218551.

Also:
  - Add appropriate metrics for DarkResume actions.
  - Added calls to SuspendAction metrics in the suspend actions
    code path, and modified some calls that wrongly collected
    termination action metrics.

BUG=chromium:428167
TEST='P2_TEST_FILTER="shill::*" FEATURES="test" USE="clang asan"
emerge-samus shill' succeeds.

Change-Id: I7b0a0e32a708479a4f1127ff1f587fd7ce3e803f
Reviewed-on: https://chromium-review.googlesource.com/226123
Tested-by: Samuel Tan <samueltan@chromium.org>
Reviewed-by: Paul Stewart <pstew@chromium.org>
Commit-Queue: Samuel Tan <samueltan@chromium.org>
diff --git a/mock_power_manager.h b/mock_power_manager.h
index 3d57b20..9608492 100644
--- a/mock_power_manager.h
+++ b/mock_power_manager.h
@@ -22,6 +22,7 @@
   ~MockPowerManager() override;
 
   MOCK_METHOD0(ReportSuspendReadiness, bool());
+  MOCK_METHOD0(ReportDarkSuspendReadiness, bool());
   MOCK_METHOD5(
       Start,
       void(DBusManager *dbus_manager,