ENH: make buttons into plugins

This PR does a lot of stuff. I probably should have separated some of the commits, but they're all interrelated.  Here's a summary:

- Make ``Reset``, ``Zoom``, and ``BoxZoom`` plugins both on the JS side and the Python side
- Add machinery so that plugins can be specified by default; make ``Reset`` and ``Zoom`` the default plugins (I didn't make ``BoxZoom`` a default plugin because for some reason it interferes with tooltips)
- Some JS code cleanup: get rid of accidental globals, add some imports in the src tree, etc.

All the tests pass for me!