shill: Decouple Cellular's IsRegistered from the network technology string.

Also, broadcast changes in the cellular service network technology and roaming
state properties.

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

Change-Id: Ia4c297586dbc9b8a32d297c126c4d791310b5abd
Reviewed-on: https://gerrit.chromium.org/gerrit/12028
Tested-by: Darin Petkov <petkov@chromium.org>
Reviewed-by: Eric Shienbrood <ers@chromium.org>
diff --git a/cellular.cc b/cellular.cc
index 6912ff2..d8cf370 100644
--- a/cellular.cc
+++ b/cellular.cc
@@ -273,8 +273,7 @@
 
 void Cellular::HandleNewRegistrationStateTask() {
   VLOG(2) << __func__;
-  const string network_tech = capability_->GetNetworkTechnologyString();
-  if (network_tech.empty()) {
+  if (!capability_->IsRegistered()) {
     if (state_ == kStateLinked) {
       manager()->DeregisterService(service_);
     }
@@ -298,8 +297,8 @@
     SetState(kStateConnected);
     EstablishLink();
   }
-  service_->set_network_tech(network_tech);
-  service_->set_roaming_state(capability_->GetRoamingStateString());
+  service_->SetNetworkTechnology(capability_->GetNetworkTechnologyString());
+  service_->SetRoamingState(capability_->GetRoamingStateString());
 }
 
 void Cellular::HandleNewSignalQuality(uint32 strength) {