shill: Disconnect and disable cellular modem when stopping the device.

Also, disconnect the cellular service on Service::Disconnect. A separate patch
wires this up to powering off the device (crosbug.com/25014).

BUG=chromium-os:25116,chromium-os:25013
TEST=unit tests, tested on chromebook with disconnect-service

Change-Id: Id3b8c10fbfd917702738b8a4385d7954c03de204
Reviewed-on: https://gerrit.chromium.org/gerrit/14230
Commit-Ready: Darin Petkov <petkov@chromium.org>
Reviewed-by: Darin Petkov <petkov@chromium.org>
Tested-by: Darin Petkov <petkov@chromium.org>
diff --git a/cellular_service.h b/cellular_service.h
index 246a274..048db57 100644
--- a/cellular_service.h
+++ b/cellular_service.h
@@ -33,6 +33,7 @@
 
   // Inherited from Service.
   virtual void Connect(Error *error);
+  virtual void Disconnect(Error *error);
   virtual void ActivateCellularModem(const std::string &carrier, Error *error);
   virtual bool TechnologyIs(const Technology::Identifier type) const;