No longer using expandos

Switched everything to WeakMap. Significantly improved performance.