Update: Experimentall cast characters to uint8_t in UTF-8 processing code.
I've noticed with calls like printf("%d", string[0]) the printed number might be a negative huge number.
Explicitly casting it to uint8_t (rather than char) seems to be a way to avoid this and allow for the number to be better printed.
I am suspecting that this should be done in general rather than just to the print functions.
This is an experimental commit designed to make it so.
This also has an affect on bitwise operations because bitwise shifts respond differently between signed and unsigned integers.