shill: cellular: Avoid null pointer dereference if provider has no networks.

Also:

- Add a SetHomeProvider unit tests to CellularCapabilityUniversal.
- Free the test broadband provider database in CellularCapabilityUniversalTest.

BUG=chromium-os:33375
TEST=unit tests, tested on device

Change-Id: I37086954e51500840d6aa424964c973fccc6b22b
Reviewed-on: https://gerrit.chromium.org/gerrit/29872
Tested-by: Darin Petkov <petkov@chromium.org>
Reviewed-by: Ben Chan <benchan@chromium.org>
Commit-Ready: Darin Petkov <petkov@chromium.org>
diff --git a/cellular_capability_gsm.cc b/cellular_capability_gsm.cc
index af4e2df..a366ec2 100644
--- a/cellular_capability_gsm.cc
+++ b/cellular_capability_gsm.cc
@@ -473,7 +473,7 @@
   }
   home_provider_ = provider;
   Cellular::Operator oper;
-  if (provider->networks) {
+  if (provider->networks && provider->networks[0]) {
     oper.SetCode(provider->networks[0]);
   }
   if (provider->country) {