Fix Version/s: None
One challenge in switching from PTR(Span) to Span in Footprint is that Swig won't generate wrappers for std::vector<Span> (or any other container) if %shared_ptr(Span) is used anywhere else in the codebase.
So, to allow both the old Footprint class and the new SpanRegion to coexist (temporily), we need to have two Span classes, one wrapped with %shared_ptr and one wrapped without it.
Since we don't want to disrupt the old Footprint class yet, we should call the new Span something else, and make it the one that's wrapped without %shared_ptr.
This ticket can be considered complete once we have a unit test demostrating a usable Swig-wrapped std::vector<NewSpan> while all old Footprint tests continue to pass.
DM-2425 Implement SpanSet core functionality