Implement the map/unmap functions
Port several renderers to use the map/unmap

Now we can safely use gl based surfaces for sw based
renderers