Issue 6520: implement panning and zooming

@mrocklin @mfrere , this rather extensive reworking supports panning and zooming à la http://bl.ocks.org/eigenhombre/7362945/52070c225cb7d656a7608ebe9d38e8e754b0e9ca

Comments welcome.  I have one or two more tweaks I'd like to try and get in; then I will merge either tomorrow or Monday.

One thing I don't like is that you can zoom out endlessly until the graph disappears.  A refinement would be to restrict to the original x / y extents (i.e. you can zoom out only after you've zoomed in).  This is apparently not easy to implement w/ the current D3.js but I may try anyway when the opportunity presents itself.