shill: Service: Report and filter EAP remote certificate subjects

Create a read-only "EAP.RemoteCertification" parameter in WiFi
services that returns the subject name of each entity in the
ceritificate chain in the server side of TLS authentication.

Create a read/write "EAP.SubjectMatch" parameter in WiFi services
that populates the "subject_match" parameter in wpa_supplicant for
802.1x interactions.  This allows callers to specify that we only
connect to specific endpoints who have a subject name that contains
this substring.

BUG=chromium-os:31247
TEST=New unit tests + observe EAP-TLS autotest
Change-Id: Ia37b7726e08eb121fb1ab7ec4c2de7eb958fc9cf
Reviewed-on: https://gerrit.chromium.org/gerrit/23746
Commit-Ready: Paul Stewart <pstew@chromium.org>
Reviewed-by: Paul Stewart <pstew@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
diff --git a/supplicant_interface_proxy.h b/supplicant_interface_proxy.h
index 87f46cd..95da0d2 100644
--- a/supplicant_interface_proxy.h
+++ b/supplicant_interface_proxy.h
@@ -59,6 +59,8 @@
                           const std::map<std::string, ::DBus::Variant>
                           &properties);
     virtual void BSSRemoved(const ::DBus::Path &BSS);
+    virtual void Certification(const std::map<std::string, ::DBus::Variant>
+                               &properties);
     virtual void NetworkAdded(const ::DBus::Path &network,
                               const std::map<std::string, ::DBus::Variant>
                               &properties);