shill: Add support for detecting PPP devices

Use the device ARP Hardware Type to detect both PPP devices.  Fix
up loopback to use the same.  Also add unit tests for
DeviceInfo::GetDeviceTechnology().

BUG=chromium-os:29771
TEST=New unit tests.  Manual: Run on device for loopback, ppp, tunnel and wifi

Change-Id: I8b39bcf68926757d10756b9cbc1692ec891e117f
Reviewed-on: https://gerrit.chromium.org/gerrit/20802
Reviewed-by: Darin Petkov <petkov@chromium.org>
Commit-Ready: Paul Stewart <pstew@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
diff --git a/technology_unittest.cc b/technology_unittest.cc
index ce401e5..803d4dc 100644
--- a/technology_unittest.cc
+++ b/technology_unittest.cc
@@ -22,9 +22,10 @@
   EXPECT_EQ(Technology::kEthernet, Technology::IdentifierFromName("ethernet"));
   EXPECT_EQ(Technology::kWifi, Technology::IdentifierFromName("wifi"));
   EXPECT_EQ(Technology::kCellular, Technology::IdentifierFromName("cellular"));
-  EXPECT_EQ(Technology::kTunnel, Technology::IdentifierFromName("Tunnel"));
-  EXPECT_EQ(Technology::kLoopback, Technology::IdentifierFromName("Loopback"));
+  EXPECT_EQ(Technology::kTunnel, Technology::IdentifierFromName("tunnel"));
+  EXPECT_EQ(Technology::kLoopback, Technology::IdentifierFromName("loopback"));
   EXPECT_EQ(Technology::kVPN, Technology::IdentifierFromName("vpn"));
+  EXPECT_EQ(Technology::kPPP, Technology::IdentifierFromName("ppp"));
   EXPECT_EQ(Technology::kUnknown, Technology::IdentifierFromName("bluetooth"));
   EXPECT_EQ(Technology::kUnknown, Technology::IdentifierFromName("wimax"));
   EXPECT_EQ(Technology::kUnknown, Technology::IdentifierFromName("foo"));
@@ -35,10 +36,11 @@
   EXPECT_EQ("ethernet", Technology::NameFromIdentifier(Technology::kEthernet));
   EXPECT_EQ("wifi", Technology::NameFromIdentifier(Technology::kWifi));
   EXPECT_EQ("cellular", Technology::NameFromIdentifier(Technology::kCellular));
-  EXPECT_EQ("Tunnel", Technology::NameFromIdentifier(Technology::kTunnel));
-  EXPECT_EQ("Loopback", Technology::NameFromIdentifier(Technology::kLoopback));
+  EXPECT_EQ("tunnel", Technology::NameFromIdentifier(Technology::kTunnel));
+  EXPECT_EQ("loopback", Technology::NameFromIdentifier(Technology::kLoopback));
   EXPECT_EQ("vpn", Technology::NameFromIdentifier(Technology::kVPN));
-  EXPECT_EQ("Unknown", Technology::NameFromIdentifier(Technology::kUnknown));
+  EXPECT_EQ("ppp", Technology::NameFromIdentifier(Technology::kPPP));
+  EXPECT_EQ("unknown", Technology::NameFromIdentifier(Technology::kUnknown));
 }
 
 TEST_F(TechnologyTest, IdentifierFromStorageGroup) {