shill: Implement DHCPConfig::ReleaseIP

Also, add some unit tests, and some cleanup.

BUG=chromium-os:16365,chromium-os:16013
TEST=unit tests

Change-Id: I896bce08c6f177c9d5f6c5772c9208e8223c39df
Reviewed-on: http://gerrit.chromium.org/gerrit/2486
Reviewed-by: Chris Masone <cmasone@chromium.org>
Reviewed-by: Darin Petkov <petkov@chromium.org>
Tested-by: Darin Petkov <petkov@chromium.org>
diff --git a/dhcp_provider.cc b/dhcp_provider.cc
index 163b1ca..bbf73fb 100644
--- a/dhcp_provider.cc
+++ b/dhcp_provider.cc
@@ -31,14 +31,14 @@
 
 DHCPConfigRefPtr DHCPProvider::CreateConfig(DeviceConstRefPtr device) {
   VLOG(2) << __func__;
-  return DHCPConfigRefPtr(new DHCPConfig(this, device, glib_));
+  return new DHCPConfig(this, device, glib_);
 }
 
-DHCPConfigRefPtr DHCPProvider::GetConfig(unsigned int pid) {
+DHCPConfigRefPtr DHCPProvider::GetConfig(int pid) {
   VLOG(2) << __func__;
   PIDConfigMap::iterator it = configs_.find(pid);
   if (it == configs_.end()) {
-    return DHCPConfigRefPtr(NULL);
+    return NULL;
   }
   return it->second;
 }