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.
This should be `class WeakMapShim<K, V> implements WeakMap<K, V> {` and the class should follow the `WeakMap` interface defined in TS1.3.