dds_get_outer AddRefs the inner surface when it creates the wrapper
surface. The wrapper releases only one reference when it is destroyed,
leaking one of the two. AddRefing in dds_get_outer makes sense because
this is also used by e.g. GetAttachedSurface, where it creates a new
wrapper for surfaces ddrawex didn't know about yet.
Tests show that in ddrawex.dll it is legal to create a surface with
both DDSCAPS_VIDEOMEMORY and DDSCAPS_SYSTEMMEMORY flag set. A surface
created that way shows different behavior in IDirectDrawSurface::GetDC.
This allows us to cleanly implement the differences between ddraw.dll and
ddrawex.dll without private functions and if checks if an object was created
by ddraw or ddrawex. A similar wrapper will be added for IDirectDrawSurface.