Camera-Terrain interaction

For #449, #549, and #1060.

* Default panning now picks the terrain.
* Modified the default camera tilt mouse behavior to tilt about the point clicked.
* Added camera collision detection to the default mouse interaction.
* Added the following methods to `IntersectionTests`: `rayTriangle`, `lineSegmentTriangle`, `raySphere`, and `lineSegmentSphere`.
* Added `Quaternion.rotateVector` for fast application of a quaternion rotation to a vector. This code:
`var result = Quaternion.rotateVector(quatRotation, vector);`
is faster than
```javascript
var rotation = Matrix3.fromQuaternion(quatRotation);
var result = Matrix3.multiplyByVector(rotation, vector);
```
* Fixed camera rotation near the camera's constrained axis.
* Added `Globe.intersect` and `Globe.pick` for finding intersections of a ray or line segment with the globe. `Globe.pick` only performs a ray intersection test with the part of the surface that was rendered.

There are still some performance improvements that I want to make for tilting. It's a little slow in 3D and worse in Columbus view because of the constant projections to 2D.
Throughout - just take `scene` instead of `frameState`, which makes it easier for users to not have to reach into scene.