Play nicer with browserify

The existing browserify package has the behavior that require('d3') wipes out any preexisting `d3` global. This is problematic if you want to use D3 internally in a package but allow that package to be consumed in projects that themselves might use D3 (and perhaps a different version, or a custom smash build).

Can we modify `start.js` and `end.js` to conditionally check for a node/browserify environment and not create a global? Something like this, but I haven't considered all of the ramifications (and this breaks the tests).