OrbitControls update condition should check offset and orientation

`OrbitControls` only checks the camera position offset to decide when to
emit a `change` event. When the camera is near either pole and the user
is rotating in azimuth, the position changes very little while the
camera orientation changes a lot. As a result, the view feels 'stuck' in
azimuth near the poles.

This patch modifies the camera update condition to take into account
both the change in offset and orientation between `change` events. The
update condition is now:

    (camera displacement)^2 + (camera rotation in radians)^2 > EPS

The additional term is computed from the dot product of the camera's
orientation quaternion at consecutive time steps:

    8 * (1 - q.r)

The second-order Taylor expansion of this expression is the square of
the camera rotation angle between frames.
added raycasting of pointclouds with BufferGeometry

added optional parameter intersectPoint to Ray.distanceToPoint()

fixed Ray.distanceToPoint()
support tga format texture
Or, rather than add, terms in update tolerance
Add Quaternion dot() method instead of converting to Vector4
tgaTexture: allocate palette buffer using colormap length * size
tgaTexture: scene, collada, and obj loader support tga texture format
add the tga texture loader example
Add methods .merge and .makegroups
added raycasting pointcloud example. fixed raycasting issues.

fixed example
Remove TGATexture class because DataTexture can replace TGATexture class.
fixed touch event handling in transform controls
fixes issue #4771
Merge remote-tracking branch 'm-schuetz/dev_raycasting_pointclouds' into dev
Spaces clean up.
More clean up.
Updated builds.
Merge pull request #4787 from paulmasson/patch-1

Add methods .merge and .makeGroups
Moved Raycaster's Sprite code to Sprite.raycast(). See #3492.
Updated builds.
Added raycast() method to Object3D.