shill: cellular: Create a pseudo service for activation.

BUG=chromium-os:16134
TEST=Tested the following:
1. Build and run unit tests.
2. Verify existing GSM and CDMA cellular services work as expected.
3. Verify a cellular service that requires activation is created without
   registering to a network.

Change-Id: Ic02ac53641483d60c0517691b9b1f42dc4744d6e
Reviewed-on: https://gerrit.chromium.org/gerrit/38096
Reviewed-by: Darin Petkov <petkov@chromium.org>
Commit-Ready: Ben Chan <benchan@chromium.org>
Tested-by: Ben Chan <benchan@chromium.org>
diff --git a/cellular.cc b/cellular.cc
index dd387dd..ace05cd 100644
--- a/cellular.cc
+++ b/cellular.cc
@@ -343,6 +343,12 @@
 
 void Cellular::HandleNewRegistrationState() {
   SLOG(Cellular, 2) << __func__ << ": " << GetStateString(state_);
+  if (capability_->IsServiceActivationRequired()) {
+    if (state_ == kStateEnabled && !service_.get()) {
+      CreateService();
+    }
+    return;
+  }
   if (!capability_->IsRegistered()) {
     DestroyService();
     if (state_ == kStateLinked ||
@@ -440,7 +446,7 @@
 void Cellular::OnConnected() {
   SLOG(Cellular, 2) << __func__;
   if (state_ == kStateConnected || state_ == kStateLinked) {
-    VLOG(2) << "Already connected";
+    SLOG(Cellular, 2) << "Already connected";
     return;
   }
   Closure start_cb = Bind(&Cellular::StartTermination,