When d3.js is loaded, it now prefers the AMD define function or module.exports
if available; the global `d3` is only set if neither of these are available. A
side benefit of this change is that browserify, bower and component can now load
the D3 library directly rather than needing a custom definition.
In some cases IE9 processes the opening of an XDomainRequest synchronously, so
by the time we were setting the response function to parse the DSV file, it was
too late. So instead we use the internal d3_xhr method to set the response
function before the request is sent. This is a continuation of fix#1260.
IE doesn’t support __proto__ patching, so if the selection.prototype.transition
method isn’t yet defined at the time d3_selectionRoot is defined, it won’t
inherit the method when the prototype is patched later! This restores the
original order of dependencies so that the transition method is defined before
d3_selectionRoot is created.