wined3d: Support custom pitches in wined3d_surface_update_desc (try 3).

Try 3: Fix the size calculation, use height * pitch.

Try 2: Drop the first patch and always calculate the surface size based
on width, height and format to make sure a format with a non-zero size
is set.
ddraw: Always set surface width, height and format in ddraw_surface7_SetSurfaceDesc (try 2).

Try 2: Pass the pitch from the old ddraw surface desc structure to
wined3d if the new ddsd does not specify a pitch. Otherwise we'd reset a
previously applied custom pitch if a second SetSurfaceDesc call does not
specify a pitch on its own.

Resetting the pitch may be correct, but this needs tests, and if so,
should be changed by a separate patch.
wined3d: Simplify wined3d_surface_set_mem.
wined3d: Merge wined3d_surface_set_mem into wined3d_surface_update_desc (try 2) .

Try 2: Keep the mapped and dc in use checks.

Note that the call to surface_release_client_storage is not needed even
without the assumption that user memory and client storage are mutually
exclusive because wined3d_surface_update_desc unloads the surface before
doing anything.
ddraw/tests: Add a getdc test with a custom pitch.
wined3d: Remove SFLAG_USERPTR.
wined3d: Fix location handling in wined3d_surface_update_desc().

The SFLAG_INSYSMEM location was lost otherwise in the DIB recreation
codepath.
wined3d: Move format conversion functions.

This makes the next patch much more readable. Feel free to combine this
with the next patch.
wined3d: Move format conversion to surface_upload_data.
wined3d: Temporarily remove surface PBO support.

The implementation is strange and fairly ineffective in doing what PBOs
are supposed to do - avoiding pipeline stalls and redundant copying.
Removing it will make restructuring surfaces easier and avoid temporary
regressions. It will be re-added later.
wined3d: Remove surface_init_sysmem.
wined3d: Discard non-sysmem locations in unload.
wined3d: Make the callers of load_location responsible for allocating sysmem.
wined3d: Don't lock directly into the DIB.

For this to work properly we want the DIB to be a separate location. It
will be re-added later. Furthermore, PIN_SYSMEM isn't mutually exclusive
with locking into the DIB if the DIBs are created at surface creation.
wined3d: Put this in its place.
wined3d: Don't set SFLAG_DYNLOCK on lockable render targets

SFLAG_PIN_SYSMEM takes care of this nowadays.
wined3d: Directly upload converted formats in surface_upload_from_surface

This way we don't have to map destination resources in update_texture or
update_surface, which are usually not mappable. It also gets rid of the
call circle between surface_upload_from_surface and wined3d_surface_blt.

The drawback is that we can't properly map a dynamic default pool
surface with a converted format that has been updated with
update_surface or update_texture. In the remote event that an
application needs this, my preferred solution is to add support for
converting converted formats back.
wined3d: Store volume locations in the resource.
wined3d: Store surface locations in resource.locations.
wined3d: Move validate_location to resource.c.