lib/template.js
function(pluginName,callback,deep){
	var file = (deep ? './../../../noodles_plugins/' : './../plugins/') + pluginName + '/' + pluginName,
		_self = this;
	require([file],function(plugin){
		if(typeof plugin === "undefined" || typeof plugin.Plugin === "undefined"){
			if(deep)
				throw pluginName + " does not exist as a plugin.";
			else
				return _grabPlugin.call(_self,pluginName,callback,true);
		}
		plugin = plugin.Plugin;
		if(typeof plugin.getNoodles !== "undefined"){
			plugin.getNoodles(_Noodles);
		}
		plugin = new _Noodles.Plugin(plugin);
		if(typeof plugin.pluginName === "undefined"){
			 throw "The following plugin needs a plugin name: "+ plugin.toString();
		}
		if(BrowserEnvironment && !plugin.browserFriendly) Utilities.warning(_self,["The following plugin will not work for the browser: ", _self.language.others(plugin.pluginName)] );
		if(typeof plugin.onTemplateCreate !== "undefined"){
			plugin.onTemplateCreate(_self,function(){
				allPlugins[plugin.pluginName] = plugin;
				if(typeof plugin.willHandle !== "undefined" && plugin.handleToken !== "undefined"){
					var handle = plugin.willHandle(_self),
						t = handle.length;
					while(t--){
						_self._tagDelegation[handle[t]] = plugin.pluginName;
					}
				}
				callback();
			});
		}
	});
}
function(pluginName,callback,deep){
	var file = (deep ? './../../../noodles_plugins/' : './../plugins/') + pluginName + '/' + pluginName,
		_self = this;
	require([file],function(plugin){
		if(typeof plugin === "undefined" || typeof plugin.Plugin === "undefined"){
			if(deep)
				throw pluginName + " does not exist as a plugin.";
			else
				return _grabPlugin.call(_self,pluginName,callback,true);
		}
		plugin = plugin.Plugin;
		if(typeof plugin.getNoodles !== "undefined"){
			plugin.getNoodles(_Noodles);
		}
		plugin = new _Noodles.Plugin(plugin);
		if(typeof plugin.pluginName === "undefined"){
			 throw "The following plugin needs a plugin name: "+ plugin.toString();
		}
		if(BrowserEnvironment && !plugin.browserFriendly) Utilities.warning(_self,["The following plugin will not work for the browser: ", _self.language.others(plugin.pluginName)] );
		if(typeof plugin.onTemplateCreate !== "undefined"){
			plugin.onTemplateCreate(_self,function(){
				allPlugins[plugin.pluginName] = plugin;
				if(typeof plugin.willHandle !== "undefined" && plugin.handleToken !== "undefined"){
					var handle = plugin.willHandle(_self),
						t = handle.length;
					while(t--){
						_self._tagDelegation[handle[t]] = plugin.pluginName;
					}
				}
				callback();
			});
		}
	});
}
--Noodles--
name:_grabPlugin - private method
description: grabs the actual plugin files, for the browser though.
@param{string}
@param{function}
@param{boolean}