Polyfill QUnit memory leak prevention.
Polyfill QUnit memory leak prevention.

This polyfills the changes from https://github.com/qunitjs/qunit/pull/1279 to older versions of QUnit.

---

Prior to the changes in this PR, all module and test callbacks are retained (forever). This may not seem significant, but as folks use closure scope to store data across tests (which is very common).

For example, prior to the changes in this PR the following would retain the local variable:

```js
QUnit.module('top', function(hooks) {
  let largeThing;

  hooks.beforeEach(function() {
    largeThing = new LargeThing();
  });

  hooks.afterEach(function() {
    largeThing.destroy();
  });

  test('something that uses largeThing', function(assert) {
    // ...snip...
    largeThing.someMethod();
  });
});
```

GavinJoyce/ember.js,kanongil/ember.js,emberjs/ember.js,Turbo87/ember.js,thoov/ember.js,tildeio/ember.js,cibernox/ember.js,asakusuma/ember.js,csantero/ember.js,mfeckie/ember.js,GavinJoyce/ember.js,mixonic/ember.js,miguelcobain/ember.js,asakusuma/ember.js,asakusuma/ember.js,jaswilli/ember.js,twokul/ember.js,givanse/ember.js,bekzod/ember.js,xiujunma/ember.js,tildeio/ember.js,mike-north/ember.js,miguelcobain/ember.js,emberjs/ember.js,tildeio/ember.js,cibernox/ember.js,givanse/ember.js,bekzod/ember.js,twokul/ember.js,Turbo87/ember.js,mike-north/ember.js,intercom/ember.js,elwayman02/ember.js,xiujunma/ember.js,sly7-7/ember.js,cibernox/ember.js,intercom/ember.js,csantero/ember.js,sandstrom/ember.js,csantero/ember.js,miguelcobain/ember.js,csantero/ember.js,qaiken/ember.js,knownasilya/ember.js,miguelcobain/ember.js,twokul/ember.js,qaiken/ember.js,knownasilya/ember.js,asakusuma/ember.js,fpauser/ember.js,qaiken/ember.js,knownasilya/ember.js,thoov/ember.js,GavinJoyce/ember.js,jaswilli/ember.js,sly7-7/ember.js,kellyselden/ember.js,Turbo87/ember.js,sandstrom/ember.js,GavinJoyce/ember.js,bekzod/ember.js,elwayman02/ember.js,intercom/ember.js,jaswilli/ember.js,kanongil/ember.js,sly7-7/ember.js,cibernox/ember.js,fpauser/ember.js,mfeckie/ember.js,thoov/ember.js,mike-north/ember.js,kellyselden/ember.js,stefanpenner/ember.js,intercom/ember.js,twokul/ember.js,givanse/ember.js,stefanpenner/ember.js,mixonic/ember.js,elwayman02/ember.js,emberjs/ember.js,thoov/ember.js,mfeckie/ember.js,mfeckie/ember.js,xiujunma/ember.js,kellyselden/ember.js,fpauser/ember.js,kanongil/ember.js,mixonic/ember.js,stefanpenner/ember.js,mike-north/ember.js,kanongil/ember.js,Turbo87/ember.js,elwayman02/ember.js,bekzod/ember.js,kellyselden/ember.js,sandstrom/ember.js,fpauser/ember.js,givanse/ember.js,qaiken/ember.js,jaswilli/ember.js,xiujunma/ember.js