Wrap IE specific files to properly set methods on window or global

Unwrapped code can cause issues with `this` if the code is appended to other code that has 'use strict' defined outside of a function scope.

To prevent any issues in reference to `this`, wrap the IE code in a self-executing function and make any changes to a reference to `window` or `global`.