Add zooming and panning to the D3Graphs

This pull request adds zooming and panning to the d3 graphs. When the mouse is over a graph, holding shift or alt will allow zooming and panning instead of the normal stretching functionality.

It was quite tricky to get all the events capturing in a cross platform way, and not interfere with original interactivity (e.g. double click to expand a node). I've tested on Safari / Firefox / Chrome. Please let me know if there are any issues.

I've separated the request into two commits. One to update d3.js and one to add the zooming / panning.