added IE 8 compatability

Lots of small changes, so it crashes less under IE 8.
This is mostly around avoiding __proto__,
and 'defineProperty', where appropriate.

It also unifies the shim setting with a single
function to do this.

Finally shim and extras have been moved to jsx.