Fix config_item() returning stale values

Use case fixed:

    config_item('foobar'); // returns "some value"
    $CI->config->set_item('foobar', 'new value');
    config_item('foobar'); // still returns "some value", expected "new value"
diff --git a/system/core/Common.php b/system/core/Common.php
index 93cd0a0..b95a05d 100644
--- a/system/core/Common.php
+++ b/system/core/Common.php
@@ -289,20 +289,15 @@
 	 */
 	function config_item($item)
 	{
-		static $_config_item = array();
+		static $_config;
 
-		if ( ! isset($_config_item[$item]))
+		if (empty($_config))
 		{
-			$config =& get_config();
-
-			if ( ! isset($config[$item]))
-			{
-				return FALSE;
-			}
-			$_config_item[$item] = $config[$item];
+			// references cannot be directly assigned to static variables, so we use an array
+			$_config[0] =& get_config();
 		}
 
-		return $_config_item[$item];
+		return isset($_config[0][$item]) ? $_config[0][$item] : FALSE;
 	}
 }