shill: LinkMonitor: Schedule periodic ARP requests

The LinkMonitor performs periodic unicast and broadcast ARP requests
for a connection's gateway IP address.  It creates a weighted
average of response time, and can call a failure callback function
whenever the sum of consecutive unicast and broadcast response
failures exceed a threshold.

BUG=chromium-os:32600
TEST=Unit tests

Change-Id: Id5a66ad9ca80c51f227ef4811eb8c3885a70c1b8
Reviewed-on: https://gerrit.chromium.org/gerrit/28610
Commit-Ready: Paul Stewart <pstew@chromium.org>
Reviewed-by: Paul Stewart <pstew@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
diff --git a/mock_connection.h b/mock_connection.h
index 0f95959..7ecc6f0 100644
--- a/mock_connection.h
+++ b/mock_connection.h
@@ -26,6 +26,8 @@
   MOCK_CONST_METHOD0(interface_name, const std::string &());
   MOCK_CONST_METHOD0(dns_servers, const std::vector<std::string> &());
   MOCK_METHOD1(RequestHostRoute, bool(const IPAddress &destination));
+  MOCK_CONST_METHOD0(local, const IPAddress &());
+  MOCK_CONST_METHOD0(gateway, const IPAddress &());
   MOCK_METHOD0(CreateGatewayRoute, bool());
 
  private: