Restore optimized scatterplots

This is a fix for #175 

A consequence of #101 was that some special-cased calls to `gc.draw_markers_at_points()` were removed. These are not general (they don't handle variable sizes or colors) but they are very, very fast because they run in C/C++, at least for the Agg and OpenGL backends that they are implemented for.

As a result we have lost some performance when dealing with simple scatter plots on large (eg. ~1e6 point) data sets.

This PR restores the special-cased calls to those fast routines where available.

There is a basic test which should exercise all code paths and validate that _something_ is drawn.