Speed improvements for scatterplot

There are some older numpy idioms that can be made much faster now.

Also, I avoid invalidating and redrawing on metadata events when the selection
is not being shown. This lets us use `RangeSelection` tools that happen to set
this metadata even if we are not using it without paying the penalty of
invalidating the backbuffer on every event.