adapt to MS-GSL v3
GSL v3 has made significant changes to gsl::span to be consistent with the upcoming std::span in C++20. this MR adapts (some of) the code to be compatible with both the 'old' and 'new' gsl::span implementations.
GSL v3 has made significant changes to gsl::span to be consistent with the upcoming std::span in C++20. this MR adapts (some of) the code to be compatible with both the 'old' and 'new' gsl::span implementations.