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/mock_wifi_service.h b/mock_wifi_service.h
index f9e3bf9..c35475b 100644
--- a/mock_wifi_service.h
+++ b/mock_wifi_service.h
@@ -29,6 +29,8 @@
 
   MOCK_METHOD1(SetFailure, void(ConnectFailure failure));
   MOCK_METHOD1(SetState, void(ConnectState state));
+  MOCK_METHOD2(AddEAPCertification, bool(const std::string &name,
+                                         size_t depth));
 
  private:
   DISALLOW_COPY_AND_ASSIGN(MockWiFiService);