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.
Ok, I did that and got:
```
dojo2/WeakMap.ts(59,2): error TS2012: Cannot convert 'typeof WeakMapPolyfill' to 'new<K, V>() => WeakMap<K, V>':
	Construct signatures of types 'typeof WeakMapPolyfill' and 'new<K, V>() => WeakMap<K, V>' are incompatible:
		Call signature expects 0 or fewer parameters.
```