Logic which initialized a 3D viewport in ED_area_init only set it's type but didn't ensure `area->spacedata.first` pointed to a valid View3D. Resolve by adding or reusing the existing View3D. The check in `area_offscreen_init` has been replaced with an assert since the space_type for off-screen areas is set at run-time and should never be unknown.