Allow hue, chroma or saturation to be undefined.

In HSL space, grayscale colors can now have undefined hue rather than assuming a
hue of 0°; likewise black and white can have undefined saturation rather than
assuming 0%. In HCL space, black can now have undefined hue and chroma. (For
non-black grayscale colors, including white, hue and chroma are implied by the
D65 standard referent.)

When interpolating between colors with undefined hue, saturation or chroma, the
defined value is used when available. For example, when interpolating from black
to blue in HCL space, the intermediate colors are now dark blues (#241178)
rather than dark purples (#600054).

Fixes #833.
Remove duplicate code.
Select the document element, not the document.

Fixes #1219.
Fix #1220 #1218 re. d3.select and d3.selectAll.

This commit fixes d3.select so that it no longer propagates data from the
document element to the selected node when a selector is used. This commit also
fixes d3.select and d3.selectAll such that the returned selection’s group’s
parent node is set to the document element.
Formatting.
Fix #993; d3.geom.hull is now ccw.
Pull conditional out of inner loop.
Add package.json prerequisites.
Merge branch 'time' into 3.1.6
Merge branch 'fix-select' into 3.1.6
Merge branch 'convex-hull' into 3.1.6
Merge branch 'grayscale' into 3.1.6
Merge branch '3.1.6'
Saturation is only undefined for black and white.