char, unsigned char, and std::byte (C++17) are the only "byte types"
according to the C++ Standard. "byte type" means a type that can be used to
observe an object's value representation. We use uint8_t everywhere to see
bytes, so we have to ensure that uint8_t is an alias to a "byte type".
References:
http://eel.is/c++draft/basic.types
http://eel.is/c++draft/basic.memobj#def:byte
http://eel.is/c++draft/expr.sizeof#1
http://eel.is/c++draft/cstdint#syn