This changes the serialize code (.read() and .write() functions) to take a Span instead of a pointer and size. This is a breaking change for the serialize interface, so at no additional cost we can also switch to std::byte (instead of using char).
The benefits of using Span:
- Less verbose and less fragile code when passing an already existing Span(-like) object to or from serialization
The benefits of using std::byte:
- std::bytecan’t accidentally be mistaken for an integer
The goal here is to only change serialize to use spans of std::byte. If needed, AsBytes,  MakeUCharSpan, … can be used (temporarily) to pass spans of the right type.
Other changes that are included here: