Replace std::function with base::Closure

std::function doesn't support non-copyable arguments. Use base::Closure
and base::OnceClosure from libchrome instead.

Test: atest --host bluetooth_test_gd
Change-Id: Ic18bbc000730e8b0d7acff0097870bd258ee6150
diff --git a/gd/module.h b/gd/module.h
index 046ee8c..96a1109 100644
--- a/gd/module.h
+++ b/gd/module.h
@@ -21,8 +21,9 @@
 #include <map>
 #include <vector>
 
-#include "os/log.h"
+#include "common/bind.h"
 #include "os/handler.h"
+#include "os/log.h"
 #include "os/thread.h"
 
 namespace bluetooth {
@@ -151,11 +152,13 @@
 
   bool SynchronizeModuleHandler(const ModuleFactory* module, std::chrono::milliseconds timeout) const {
     std::promise<void> promise;
+    auto future = promise.get_future();
     os::Handler* handler = GetTestModuleHandler(module);
-    handler->Post([&promise] { promise.set_value(); });
-    return promise.get_future().wait_for(timeout) == std::future_status::ready;
+    handler->Post(common::BindOnce(&std::promise<void>::set_value, common::Unretained(&promise)));
+    return future.wait_for(timeout) == std::future_status::ready;
   }
 
+ private:
   os::Thread test_thread{"test_thread", os::Thread::Priority::NORMAL};
 };