Re-structure PlotSurface2D and add PlotCanvas

This allows PlotSurface2D to draw into any Drawing Surface that can
provide a Drawing Context, and clarifies extensions that can expose
either a static or an interactive PlotCanvas.