Safeguard plugins outermost IIFE from accidental overwrite of window object

The outermost IIFE now accepts (along with the jQuery object), two more objects: window and undefined. This is to safe guard the plugins against the side-effect overwrite of window object, and in older browsers, over write of the `undefined`.