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.