gdi: Add UnmanagedSurface struct to get rid of "type" member

gSurface had a misleadingly named "type" member which indicated
whether or not this surface needs to free its resources.
Get rid of this member and use an unmanaged base class, then it is
known compile-time which need cleaning up and which don't.

And a minor performance improvement in lookup function.