New css loader plugin

This is a proposal for a new css loader plugin that would inject plain css files instead of js-wrapped ones as it is done today.
It is based on the XStyle's css loader (https://github.com/kriszyp/xstyle/blob/master/core/load-css.js).
The stylesheets are loaded via injected ```<link>``` tags and the plugin will notify the module when the stylesheets have been loaded. Since not all browsers support the ```onload``` event on ```<link>``` elements (concretely, it's all webkit-based browsers with a webkit build <= 535), it also provides an alternate code path to check when the stylesheet is ready using a timeout...

This css loader pluging also contains the code required by the build system to build css layers (cc @clmath).
The call to ```has.add("event-link-onload-api", true, true, true)``` was needed because the original code used the "universal workaround" (i.e. ssWatcher) path whatever the browser the first time it runs, and if a onload event was received, it "confirmed" the  onload event support by overriding the initial feature detection.
But, in our case today, where we know exactly what are the browsers (in the set we support) that need this workaround, I think we can get rid of this line. Actually, we could also get rid of all this feature detection, and only do:
```
has.add("event-link-onload-api", function (global) {
		var wk = global.navigator.userAgent.match(/AppleWebKit\/([\d.]+)/);
		return !wk || parseInt(wk[1], 10) > 535;
	});
```
and write loadDetector as: (with the promise approach) : 
```
	var loadDetector = function (link) {
		var def = new Deferred(),
			loadHandler = has("event-link-onload-api") ?
				function (link) {
					// We're using "readystatechange" because IE happily support both
					link.onreadystatechange = link.onload = function () {
						if (!link.readyState || link.readyState === "complete") {
							cleanup(link);
							def.resolve();
						}
					};
				} :
				function (link) {
					// watches a stylesheet for loading signs.
					var sheet = link.sheet || link.styleSheet,
						styleSheets = document.styleSheets;
					if (sheet && Array.prototype.lastIndexOf.call(styleSheets, sheet) !== -1) {
						cleanup(link);
						def.resolve();
					} else {
						setTimeout(function () {
							loadHandler(link);
						}, 25);
					}
				};

		function cleanup(link) {
			link.onreadystatechange = link.onload = null;
		}

		loadHandler(link);
		return def.promise;
	};
```