Refactor OpenSSLSessionCache out of OpenSSLAdapterFactory.

This changeset refactors the OpenSSLSessionCache out of the Factory. Instead of
directly injecting a pointer to the factory to each OpenSSLAdapter instead just
a pointer to the OpenSSLSessionCache is submitted which the Factory is the sole
owner of. This provides a cleaner dependency injection interface and allows the
OpenSSLSessionCache to be tested independently of the factory that uses it. It
also allows for the factories role to be more clearly defined allowing for
additional dependency injection in future updates.

This change also removes the habit of having OpenSSL typedefs around certain
functions and instead uses the standardised ossl_typ.h header which contains
these typedefs. This makes the headers more directly tied to just what they are
responsible for doing.

Bug: webrtc:9085
Change-Id: I7938178b70acc613856139d387a1b46928dca6ad
Reviewed-on: https://webrtc-review.googlesource.com/66941
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22758}
diff --git a/rtc_base/openssl.h b/rtc_base/openssl.h
index dbbae05..eeed373 100644
--- a/rtc_base/openssl.h
+++ b/rtc_base/openssl.h
@@ -11,6 +11,11 @@
 #ifndef RTC_BASE_OPENSSL_H_
 #define RTC_BASE_OPENSSL_H_
 
+#if defined(WEBRTC_WIN)
+// Must be included first before openssl headers.
+#include "rtc_base/win32.h"  // NOLINT
+#endif                       // WEBRTC_WIN
+
 #include <openssl/ssl.h>
 
 #if (OPENSSL_VERSION_NUMBER < 0x10100000L)