Implement SystemLoader constructor

This adds a SystemLoader constructor function used internally to inherit
from Loader. `System` then becomes an instance of SystemLoader and
`SystemLoader` is set as `System.constructor`. This way downstream code
can do something like:

```js
class MyLoader extends System.constructor {

  fetch() {

  }

}
```

And doing so will have access to `super` and the like.

I also added in `esnext` to build this and use es6 classes. We talked
about doing it this way and it is *much* more elegant in my opinion
(just look at the minimal amount of code changes).

Let me know if this adds too much code or you don't like it for some
reason and I'll implement this as regular old constructor functions, but
I thought this turned out really well. Fixes #199
Bring IE8 support to SystemLoader

This updates with all of the changes recommended. To summarize:

* Using a string-replace grunt plugin to insert polyfills where needed for the various Object.* methods being used by esnext. Verified to work in IE9 (don't have an IE8 VM on this machine).
* Constructor now calls `super(options || {})`
* Removed unnecessary `System.constructor =` assignment
* Replaced tests and Node references to use `dist/es6-module-loader.js`
* instead. Part of #209
Refactor polyfills to be in a single closure

This refactors the two polyfills to share a single closure that wraps
both of them and contains polyfills for a few Object.*.

Implementation is that there is now a `polyfill-wrapper-start.js` which
has the outer most closure, then the two polyfills (after being
    compiled), then `polyfill-wrapper-end.js`.
merge loader constructor, minor wrapper adjustments