shill: vpn: Implement a ProcessKiller singleton.

This class may be used to terminate and reap child processes
asynchronously and robustly. Also:

- Use ProcessKiller to kill spawned "openvpn" and "l2tpipsec_vpn"
  processes.

- Delete the associated OpenVPN tunnel interfaces cleanly after the
  openvpn process dies.

- Fix a somewhat harmless bug where shill was sending SIGTERM to
  already dead VPN processes from child watch callbacks.

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

Change-Id: If15f08e76c51dac33a434551ef4ba11ca66d0401
Reviewed-on: https://gerrit.chromium.org/gerrit/24610
Tested-by: Darin Petkov <petkov@chromium.org>
Reviewed-by: Paul Stewart <pstew@chromium.org>
Commit-Ready: Darin Petkov <petkov@chromium.org>
diff --git a/Makefile b/Makefile
index f7012af..48447c7 100644
--- a/Makefile
+++ b/Makefile
@@ -176,6 +176,7 @@
 	portal_detector.o \
 	power_manager.o \
 	power_manager_proxy.o \
+	process_killer.o \
 	profile.o \
 	profile_dbus_adaptor.o \
 	profile_dbus_property_exporter.o \
@@ -301,6 +302,7 @@
 	mock_portal_detector.o \
 	mock_power_manager.o \
 	mock_power_manager_proxy.o \
+	mock_process_killer.o \
 	mock_profile.o \
 	mock_property_store.o \
 	mock_proxy_factory.o \
@@ -336,6 +338,7 @@
 	openvpn_management_server_unittest.o \
 	portal_detector_unittest.o \
 	power_manager_unittest.o \
+	process_killer_unittest.o \
 	profile_dbus_property_exporter_unittest.o \
 	profile_unittest.o \
 	property_accessor_unittest.o \