Fix a number of CI_Cache bugs

Fixes #4277
Supersedes #4474
Really fixes #4066
diff --git a/system/libraries/Cache/drivers/Cache_wincache.php b/system/libraries/Cache/drivers/Cache_wincache.php
index f660805..d6a0d4f 100644
--- a/system/libraries/Cache/drivers/Cache_wincache.php
+++ b/system/libraries/Cache/drivers/Cache_wincache.php
@@ -52,6 +52,24 @@
 class CI_Cache_wincache extends CI_Driver {
 
 	/**
+	 * Class constructor
+	 *
+	 * Only present so that an error message is logged
+	 * if APC is not available.
+	 *
+	 * @return	void
+	 */
+	public function __construct()
+	{
+		if ( ! $this->is_supported())
+		{
+			log_message('error', 'Cache: Failed to initialize Wincache; extension not loaded/enabled?');
+		}
+	}
+
+	// ------------------------------------------------------------------------
+
+	/**
 	 * Get
 	 *
 	 * Look for a value in the cache. If it exists, return the data,
@@ -194,13 +212,6 @@
 	 */
 	public function is_supported()
 	{
-		if ( ! extension_loaded('wincache') OR ! ini_get('wincache.ucenabled'))
-		{
-			log_message('debug', 'The Wincache PHP extension must be loaded to use Wincache Cache.');
-			return FALSE;
-		}
-
-		return TRUE;
+		return (extension_loaded('wincache') && ini_get('wincache.ucenabled'));
 	}
-
 }