Use asynchronous handler for org.chromium.Service.Start D-Bus call

This allows us to handle this D-Bus call asynchronously for Brillo
devices.  Since we want to wait for the newly created AP interface
to be enumerated before starting the service.

For now, this handler will return synchronously on both Chrome OS
and Brillo.  A separate CL (CL:178864) will update this handler to
return asynchronously on Brillo.

While there, remove the unnecessary mock function for Service.Start
and Service.Stop, since these are D-Bus method handlers.  Even though
the MockService class is now empty, we might still need it when we
remove the D-Bus dependency from the Service class (b/24194427),
so keep it for now.

Bug: 25113165
TEST=Unittest on both Chrome OS and Brillo
TEST=Manual test on both Chrome OS and Brillo

Change-Id: If0ba13ae89a25bdf9207803d7d6b008e9ad6165e
diff --git a/service.h b/service.h
index b0e7976..e193943 100644
--- a/service.h
+++ b/service.h
@@ -39,9 +39,10 @@
   Service(Manager* manager, int service_identifier);
   virtual ~Service();
 
-  // Implementation of ServiceInterface.
-  virtual bool Start(brillo::ErrorPtr* error);
-  virtual bool Stop(brillo::ErrorPtr* error);
+  // Implementation of org::chromium::apmanager::ServiceInterface.
+  void Start(
+      std::unique_ptr<brillo::dbus_utils::DBusMethodResponse<>> response);
+  bool Stop(brillo::ErrorPtr* error);
 
   // Register Service DBus object.
   void RegisterAsync(
@@ -65,6 +66,8 @@
   static const char kStateStarted[];
   static const char kStateFailed[];
 
+  bool StartInternal(brillo::ErrorPtr* error);
+
   // Return true if hostapd process is currently running.
   bool IsHostapdRunning();