refactor cairo_renderer

 - splits process functions into new cpp files to reduce peak compile memory usage
 - drops cairo_renderer_base to match agg_renderer design
 - only cairo_ptr is accepted so cairo_surface_ptr must be converted into a context first
 - fixes -fvisibility=hidden