Set camera.up vector as the orbit axis in OrbitControls

Fixes #4375. Previously, the orbit axis was hardwired to be the y-axis.

We'll see how this is received. Optionally, it could be limited to just `z-is-up` and `y-is-up`, which I believe are the two cases of interest. By limiting the options, it would likely be easier to avoid edge cases, which may come up.

Also added a new function that was required for this feature: `Quaternion.setFromUnitVectors( vFrom, vTo )`, which sets the quaternion to the rotation required to rotate direction vector `vFrom` to direction vector `vTo`.

Finally, although unrelated, `TrackballControls` was generating too many change events. Fixed.

ping @jasongrout
ping @ekatzenstein