Don't use globals

- Use load_class() to get objects during bootstrap process.
- Change load_class() to accept a class constructor parameter
  instead of previously unused class name prefix.
- Change CI_Router::__construct() to accept  as a parameter.
diff --git a/system/core/Output.php b/system/core/Output.php
index e8c1c39..2811a73 100644
--- a/system/core/Output.php
+++ b/system/core/Output.php
@@ -401,10 +401,11 @@
 	 */
 	public function _display($output = '')
 	{
-		// Note:  We use globals because we can't use $CI =& get_instance()
+		// Note:  We use load_class() because we can't use $CI =& get_instance()
 		// since this function is sometimes called by the caching mechanism,
 		// which happens before the CI super object is available.
-		global $BM, $CFG;
+		$BM =& load_class('Benchmark', 'core');
+		$CFG =& load_class('Config', 'core');
 
 		// Grab the super object if we can.
 		if (class_exists('CI_Controller', FALSE))