[core] Change Y.require() to a similar signature to Y.use()

Fixes #1584.

This change gets rid of the multiple parameter signature which could potentially result in unexpected behavior based on certain modules being replace with the `Y`. This is the new signature:

```js
YUI().require('es6-set', 'es6-bar', function (Y, imports) {
  var Set = imports['es6-set']['default'],
      set = new Set();
});
```

This PR also introduces support for conditionally loaded ES6 modules that use `when: 'instead'`.

I fixed the coverage tests and we have 100% coverage over the `require` function (still low for the rest of `yui-base`):

![coverage](https://f.cloud.github.com/assets/347002/2033200/6a120272-8919-11e3-9d60-f50ec85e2789.jpg)

Ping @ericf @caridy