Provide a WeakMap Polyfill

This provides a polyfill that matches the current draft ES6 specification for WeakMap.  It addresses issue #2.

It adds a simplistic UID generation as `lang.getUID()`.

It provides a WeakMap polyfill that offloads to the native implementation when detected.
"Conditional" classes are hard in TypeScript.  I looked and looked and didn't find anything that lead me the right direction.  I will try what you suggest though.  I need to quote somebody!