Also use it instead of CPU.h's possibly_unaligned_data interface
This lets us load misaligned 64 bit integers, and misaligned pointers in a platform agnostic way.
This adds an `AK::ByteReader` to help with that so we don't duplicate the logic all over the place. No more `*(const u16*)` and `*(const u32*)` for anyone. This should help a little with #7060.