Implement RobustCCW, RegionCoverer, PolygonBuilder

RobustCCW uses ExpensiveCCW under the hood when ccw == 0. If after running
ExpensiveCCW and the sign of the determinant is still 0, resort to symbolic
perturbations to resolve the sign. This is made possible with an ExactFloat
implementation (github.com/davidreynolds/exactfloat).

RegionCoverer uses a Region interface for computing the coverings for
different types.

PolygonBuilder supports Loop(s) and Polygon assembling. RegionCoverer takes
those objects and generates a covering of CellIDs.

- Exercise the RobustCCW and symbolic perturbation code.
- Added Cell, Loop, Polygon, Polyline, and Matrix types with tests.
- Added Region interface to gather coverings for different types.
- Added quadratic projection metrics (stToUV() uses quadratic projections).
    - Bugs can occur when stToUV() and metrics implementations use different
      projections.
- Edge crossings with tests.
- Loop containment tests.
- Expose CellIDFromPoint.
- Add Id() method to Cell
- Cell tests with metrics
styling
appengine doesn't support unsafe