Allow projection.invert to return null.

Previously this would throw errors.
README.md: Point hyperlinks at github explicitly

Using relative hyperlinks here results in some weirdness when the
readme is displayed on npmjs.org.

If this patch lands, I'd suggest also doing `npm publish -f` (or
just bump the version in package.json and `npm publish` un-forcefully.)
Fix for duplicate keys in selection.data.

Fixes #997. The enter, update and exit selections are now initialized as fixed-
length arrays rather than dynamically populated with nulls. If duplicate keys
are used for either data or selected elements, only the first datum or element
is considered and subsequent data or elements are ignored.
Add test and fix for duplicate keys.
Simplify.

The length of the exit selection is always the same as the length of the
original selection, independent of the data, so there is no need to compute the
maximum of the two lengths.
Merge branch 'patch-1' of https://github.com/isaacs/d3 into 3.0.3
Merge branch 'fix-duplicate-keys' into 3.0.3
Merge branch '3.0.3'