Experimental THREE.Geometry replacement class with on-demand TypedVector proxy generators

This is my attempt at making a compatibility wrapper for ```Geometry``` which is based on ```BufferGeometry```, as discussed in #4386.  It uses getters and ```TypedVector``` proxy objects to allow users to interact with the underlying ```BufferGeometry``` using the familiar ```Geometry``` properties (```geometry.faces```, ```geometry.vertices```, etc.).  Proxy objects are only generated for attributes on first access, which avoids the time and memory waste associated with generating them on init.

This probably shouldn't be merged as-is, since it's more of a proof-of-concept - if performance is as good as I expect it to be (should be identical to ```BufferGeometry``` on init, and still faster than ```Geometry```) , this could be used as a replacement for the default ```THREE.Geometry```.