Regarding dirty rectangles:<br> Documentation for `ForceUpdate` states that "The system might update any region that is larger than the specified rectangle, including possibly the entire window". While native seems to use a sort of dirty-rectangle approach, for this MR, I am simply dirtying the entire surface. If someday someone did want to more-closely match the behavior of native, much can be learned from the rectangles passed to the update callbacks.
-- v5: d3drm: Add support for device update callbacks. d3drm: Blit render target to primary surface on device update. d3drm: Implement parameter validation for viewport force update. d3drm/tests: Add tests for Direct3DRMDevice Update