Logarithmic depth buffer support

I've added logarithmic depth buffer support to Three.js.  This allows a constant range of z-buffer precision over the whole scene, rather than the normal linear z-buffer which concentrates all of the precision closest to the near plane.  See http://outerra.blogspot.com/2012/11/maximizing-depth-buffer-range-and.html for a full technical run-down of the problem and the solution.

When active, this allows the camera to have a camera near plane of 0 and a far plane of any size, without suffering z-fighting or tearing of geometry.  I've created a "stress test" example which shows off a very large scene (far plane = 1e24) with a wide range of object sizes (from 1 micrometer to 120,000 light years).  The same scene is displayed with both normal and logarithmic z-buffers, for comparison.  The example is viewable online here: http://baicoianu.com/~bai/three.js/examples/webgl_camera_logarithmicdepthbuffer.html.  A video of the example is available on youtube: http://www.youtube.com/watch?v=UJzK-qsyGxU

This optionally makes use of the EXT_frag_depth webgl draft extension, which is currently available in the latest Chrome stable release, behind the "Enable WebGL draft extensions" option in about:flags.  This extension helps fix a degenerate case with large, insufficiently-tesselated polygons too close to the camera.  

The option is activated by passing logarithmicDepthBuffer: true as an argument when instantiating WebGLRenderer:

```var renderer = new THREE.WebGLRenderer({antialias: true, logarithmicDepthBuffer: true});```

When active, this option includes some ShaderChunks in the vertex shader for all of Three.js's included materials which modify gl_Position.z.  If the EXT_frag_depth extension is available, it also sets gl_FragDepth in the fragment shader.