shill: Add "IPConfig" property for Services

Add an IPConfig property to services so it can be directly referenced
here instead of indirectly through the device.  A side effect of this
is that one can query the IPConfig RPCIdentifier for a VPN service
even though the device is not registered.  While we are at it, fix
all the PropertyStore values to be read-only since we never want to
allow these fields to be modified on the IPConfig itself.  Later we
will provide a method for individual IPConfig fields to be overridden
but these will be Service properties.

BUG=chromium-os:29540
TEST=Manual: Over DBus, ensure that IPConfig property points at a
readable IPConfig instance, both for OpenVPN, Ethernet and WiFi.
Ensure that in the Chrome UI, the "Network Info" is still available
(basically checking to make sure IPConfigs are still displayable
using the old method) even thought the parameters are now set to
be "Const".

Change-Id: Ib01297ef8dc9bec828ed57361873e9eebc0354bd
Reviewed-on: https://gerrit.chromium.org/gerrit/20983
Commit-Ready: Paul Stewart <pstew@chromium.org>
Reviewed-by: Paul Stewart <pstew@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
diff --git a/mock_connection.h b/mock_connection.h
index 5092ef0..620ae60 100644
--- a/mock_connection.h
+++ b/mock_connection.h
@@ -20,6 +20,7 @@
   MOCK_METHOD1(UpdateFromIPConfig, void(const IPConfigRefPtr &config));
   MOCK_CONST_METHOD0(is_default, bool());
   MOCK_METHOD1(SetIsDefault, void(bool is_default));
+  MOCK_CONST_METHOD0(ipconfig_rpc_identifier, const std::string &());
   MOCK_METHOD0(RequestRouting, void());
   MOCK_METHOD0(ReleaseRouting, void());
   MOCK_CONST_METHOD0(interface_name, const std::string &());