Wrap everything in a self-invoking anonymous function

Wrap everything in a self-invoking anonymous function,
use a function declaration instead of a function expression for the `arePropertyDescriptorsSupported` function, and
cache `undefined` so it gets renamed to something shorter when compressed.
revert change to function declaration in #79
Merge pull request #79 from Daniel-Hug/patch-4

Wrap everything in a self-invoking anonymous function