shill: Create an asynchronous resolver object

Resolve DNS requests using the c-ares library but
using the shill event loop to handle events.

BUG=chromium-os:21664
TEST=New unit test

Change-Id: I99776b6cc74977d31198c67357c42a75f4047942
Reviewed-on: https://gerrit.chromium.org/gerrit/10328
Reviewed-by: Chris Masone <cmasone@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
diff --git a/event_dispatcher.h b/event_dispatcher.h
index 5ca886e..14724bc 100644
--- a/event_dispatcher.h
+++ b/event_dispatcher.h
@@ -29,15 +29,15 @@
   EventDispatcher();
   virtual ~EventDispatcher();
 
-  void DispatchForever();
+  virtual void DispatchForever();
 
   // Processes all pending events that can run and returns.
-  void DispatchPendingEvents();
+  virtual void DispatchPendingEvents();
 
   // These are thin wrappers around calls of the same name in
   // <base/message_loop_proxy.h>
-  bool PostTask(Task *task);
-  bool PostDelayedTask(Task *task, int64 delay_ms);
+  virtual bool PostTask(Task *task);
+  virtual bool PostDelayedTask(Task *task, int64 delay_ms);
 
   virtual IOHandler *CreateInputHandler(
       int fd,