Support AMD/RequireJS.

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.