Refactoring the loader to set protected class variables.

Moved _ci_autoload(), which is used in CI_Controller to be a public method.  Also added CI_Loader::set_base_classes() to be called in the controller so we're not setting protected vars in another class.

Also refactored in the form_helper so it's not trying to access protected vars in CI_Loader.  Added the is_loaded() method to the loader to take care of the checks that were being done there.
diff --git a/system/helpers/form_helper.php b/system/helpers/form_helper.php
index a5cd97b..51a9c6c 100644
--- a/system/helpers/form_helper.php
+++ b/system/helpers/form_helper.php
@@ -1032,22 +1032,20 @@
 	{
 		$CI =& get_instance();
 
-		// We set this as a variable since we're returning by reference
+		// We set this as a variable since we're returning by reference.
 		$return = FALSE;
-
-		if ( ! isset($CI->load->_ci_classes) OR  ! isset($CI->load->_ci_classes['form_validation']))
+		
+		if ( ! ($object = $CI->load->is_loaded('form_validation')))
 		{
-			return $return;
+			if ( ! isset($CI->$object) OR ! is_object($CI->$object))
+			{
+				return $return;
+			}
+			
+			return $CI->$object;
 		}
-
-		$object = $CI->load->_ci_classes['form_validation'];
-
-		if ( ! isset($CI->$object) OR ! is_object($CI->$object))
-		{
-			return $return;
-		}
-
-		return $CI->$object;
+		
+		return $return;
 	}
 }