function require(options, converters, success, error){
		
		var type = types[converters.shift()];
		
		type.require(options, function require_continue_check(){
			// if we have more types to convert
			if(converters.length){
				require(options, converters, success, error)
			} else { // otherwise this is the final
				success.apply(this, arguments);
			}
		}, error)
	}
Called for every file that is loaded.  It sets up a string of methods called for each type in the conversion chain and calls each type one by one.  

For example, if the file is a coffeescript file, here's what happens:

  - The "text" type converter is called first.  This will perform an AJAX request for the file and save it in options.text.  
  - Then the coffee type converter is called (the user provided method).  This converts the text from coffeescript to JavaScript.  
  - Finally the "js" type converter is called, which inserts the JavaScript in the page as a script tag that is executed. 

@param {Object} options the steal options for this file, including path information
@param {Function} success a method to call when the file is converted and processed successfully
@param {Function} error a method called if the conversion fails or the file doesn't exist