EmberApp specific helper for an upgradeable default brocfile.

It has been a common pain point during upgrades, also a little intimidating for early users.

The goal for this is not to hide broccoli, as custom usage should not be discouraged. 
Anything reasonable that now cannot be done should be considered a bugfix.

Most if not all features should still be available

Please note, as we improve our add-on story the `legacyFilesToAppend` + `ignoredModules` + `ignoredModules` should vanish.

- [x] bring back validation
- [x] finish
- [x] feedback
- [x] bugfixes
- [ ] website docs
- [x] changelog entry


Likely what it would look like today (without the addon work)
```js
/* global require, module */

var env = require('broccoli-env').getEnv();
var EmberApp = require('ember-cli/lib/broccoli/ember-app');
var push = Array.prototype.push;

var app = new EmberApp(env, {
  name: require('./package.json').name,

  legacyFilesToAppend: [
    'jquery.js',
    'handlebars.js',
    'ember.js',
    'ic-ajax/dist/named-amd/main.js',
    'ember-data.js',
    'app-shims.js',
    'ember-resolver.js',
    'ember-load-initializers.js',
    'emberfire.js'
  ],

  // AKA whitelisted modules
  ignoredModules: [
    'ember',
    'ember/resolver',
    'ember/load-initializers',
    'ic-ajax'
  ],

 whitelistedImports: {
    // ... again, we don't get enough information from our plugins yet, to do this automatically.
  }
  // hack
  getEnvJSON: require('./config/environment')
});

if (env !== 'production') {
  push.apply(app.ignoredModules, [
    'qunit',
    'ember-qunit'
  ]);

  push.apply(app.legacyFilesToAppend, [
    'qunit/qunit/qunit.js',
    'test-shims.js',
    'ember-qunit/dist/named-amd/main.js'
  ]);
}

module.exports = app.toTree();
```

Once we have a better add-on solution it will eventually look more like:
```js
var env = require('broccoli-env').getEnv();
var EmberApp = require('ember-cli/lib/broccoli/ember-app');

module.exports = new EmberApp(env, {
  name: require('./package.json').name,
  getEnvJSON: require('./config/environment') // hack for now
});
```