WIP: ENH: add single axis zoom

Note: only the last commit here is relevant, as this is based on the refactoring in #104.

This hits one of the check marks in the 0.2 roadmap (#108), and implements an idea mentioned in the discussion in #63.

Basically, this creates a 20-pixel-wide zoom box along each axis spine which is sensitive to the zooming. To indicate this, I change the cursor to a left/right arrow or an up/down arrow as it hovers over this location.

I think it would be nice to make this zoom box cover all the axis labels. That might be possible to do automatically by tying it to the axis instances themselves. It would take a bit of rearranging in the code to do that. I think this is a good start though!