d3.simplify: improve topology preservation.
d3.simplify: improve topology preservation.

Instead of using effective areas of ∞ for shared endpoints, we now use
the maximum effective area for each connected component of the topology.
This allows islands to be removed if their maximum effective area is
below the threshold. This also fixes an issue when the projected
features are encoded as JSON, since JSON converts Infinity to null.

Efficiency should also be somewhat improved.

Related: #21.

shilon5/d3-more-plugins,shilon5/d3-more-plugins,gronke/d3-plugins,ddrugg/d3-plugins,emeeks/d3-plugins,johnochs/d3-plugins,emeeks/d3-plugins,HunjaeJung/d3-plugins,sidhart/d3-plugins,deldersveld/d3-plugins,gweinert/d3-plugins,johnochs/d3-plugins,fmacias64/d3-plugins,gweinert/d3-plugins,larskotthoff/d3-plugins,ddrugg/d3-plugins,grepman/d3-plugins,kaktus40/d3-plugins,kaktus40/d3-plugins,HunjaeJung/d3-plugins,d3/d3-plugins,gronke/d3-plugins,sidhart/d3-plugins,yinchanted/d3-plugins,deldersveld/d3-plugins,d3/d3-plugins,fmacias64/d3-plugins,larskotthoff/d3-plugins,grepman/d3-plugins,yinchanted/d3-plugins