shill: Connection: Create a link route if we are bound

Due to the behavior of some VPN servers, we may lose our route
to the default gateway of a physical interface due to the routes
assigned by a virtual interfaces.  To avert this, set a host route
for the default gateway as we bind a lower connection.

BUG=chromium-os:32643
TEST=New unit tests; tried on a known-misbehaving net (actually
working from there right now); VPN autotests

Change-Id: I68db1da339f61c415f9ba8c2c26d8cdb0276b209
Reviewed-on: https://gerrit.chromium.org/gerrit/27705
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 620ae60..0f95959 100644
--- a/mock_connection.h
+++ b/mock_connection.h
@@ -26,6 +26,7 @@
   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_METHOD0(CreateGatewayRoute, bool());
 
  private:
   DISALLOW_COPY_AND_ASSIGN(MockConnection);