Following this comment, this PR changes BlockManager::ReadRawBlock() to accept a std::vector<std::byte> instead of std::vector<uint8_t>, in order to avoid casts during its invocations.
It also adds a new SpanReader constructor to allow reading from a span of std::bytes (in addition to span of uint8_t).