wined3d: Pass a context to surface_load_sysmem.
wined3d: Pass a context to read_from_framebuffer.

In the average case the function will not be able to reuse it, because
it requires a specific context to access the WGL framebuffer. It will
restore the original context afterwards to hide the context change from
load_location / preload callers. This is related to bug 34574.
wined3d: Pass a context to surface_load_drawable and surface_blt_to_drawable.
wined3d: Pass a context to surface_blt_fbo.
wined3d: Pass a context to surface_multisample_resolve.
wined3d: Pass a context to surface_load_texture.
wined3d: Pass a context to surface_load_location.
wined3d: Make surface_load_location return nothing.
wined3d: Store volume locations in the resource.
wined3d: Move validate_location to resource.c.
wined3d: Move surface locations into the resource.
wined3d: Remove surface_validate_location.
wined3d: Move invalidate_location to resource.c.
wined3d: Invalidate containers via callback.
wined3d: Remove surface_invalidate_location.
wined3d: Move bitmap_data and user_memory into the resource.

I may want to change this to keep this in the surface. Not sure yet.
wined3d: Move load_location into the resource.

The resource part of load_location will handle transfers between sysmem
locations (heap memory, user memory, dib) and buffers. Texture loading
and downloading from textures will be delegated to surfaces / volumes.
wined3d: Replace surface_load_location with resource_load_location.

FIXME: Check if this patch is complete enough to make sense.
wined3d: Introduce helper functions for mapping volumes.
wined3d: Move volume PBO infrastructure into the resource.