shill: Supplying an APN with no "apn" field clears Cellular.APN.

Changed semantics of setting the Cellular.APN property to match
flimflam: if the supplied APN has a missing or empty "apn" field,
the user-specified APN is cleared.

BUG=chromium-os:28899
TEST=Added unit test, ran on platform using "set-apn -c" from
command line.

Change-Id: I0092b275b6322768ad7517089bb9877e76025692
Reviewed-on: https://gerrit.chromium.org/gerrit/19536
Commit-Ready: Eric Shienbrood <ers@chromium.org>
Reviewed-by: Eric Shienbrood <ers@chromium.org>
Tested-by: Eric Shienbrood <ers@chromium.org>
diff --git a/cellular_service.h b/cellular_service.h
index a502f8a..75d7dc1 100644
--- a/cellular_service.h
+++ b/cellular_service.h
@@ -106,6 +106,9 @@
   FRIEND_TEST(CellularCapabilityGSMTest, SetupApnTryList);
   FRIEND_TEST(CellularCapabilityTest, TryApns);
   FRIEND_TEST(CellularTest, Connect);
+  FRIEND_TEST(CellularServiceTest, SetApn);
+  FRIEND_TEST(CellularServiceTest, ClearApn);
+  FRIEND_TEST(CellularServiceTest, LastGoodApn);
 
   void HelpRegisterDerivedStringmap(
       const std::string &name,