use mixins to get vendor prefixes
Create ReferenceError throwers one scope higher

This ensures that the getters/setters on shadowedGlobals (which just throw ReferenceErrors) don't cause any more closure contexts to be retained than are already retained by the continued existence of the ScriptingAPI module.

Previously, this anonymous IIFE that made the ReferenceError-throwing functions also kept the context of the setShadowedGlobals in memory. This included at least an array with hundreds of strings, and an additional such contexts would be created every time setShadowedGlobals added a new throwing function for a newly created global.