Redesigned d3.geo.albersUsa.

This commit changes the albersUsa projection so that it uses a custom projection
stream rather than a custom projection function. The projection stream passes
geometry to all three constituent projections, which are then clipped to their
respective viewports. The result is that geometry that appears in multiple
projections (such as a graticule) is now rendered correctly in each, with
clipping! In addition, the inverse projection is much easier to compute because
the viewport regions of each projection are explicitly defined.
Tweak viewport positions slightly.
Keep albers and albersUsa consistent.
Save a few bytes.
Adopt more standard projections for AK and HI.

This adopts EPSG:3338 for Alaska and ESRI:102007 for Hawaii.
Tweak default scale.
Inline d3.geo.albersUsa’s stream.
Add d3.geo.albersUsa precision.
Add note about mutually exclusive clip regions.

If clipExtent is used, then the viewport rectangle can be inversely
projected to spherical coordinates to see whether it overlaps the other
inverse-projected viewports, which is of course fine in this case.
Ensure inverting clip extents always works.

In other words, when drawing the geometry {type: "Sphere"}, inverting
the generated points should ideally result in points inside the
corresponding sub-projection’s region in spherical coordinates.
Fix d3.geo.albersUsa tests.
Fix albers tests and inversion of North pole.
Fix path tests.
Add implied import.
More accurate projection function.
Cache projection stream.
Define rangeBand in context of rangePoints.

Previously, the rangeBand was zero when rangePoints was used. Now it returns the
size of the step between points. Fixes #584.
Merge branch 'fix-range-band' into 3.1.8
Merge branch '3.1.8'