Fix a bug in printf()
Created by: Arcterus
Because we were previously converting the bytes in the format string into Rust's char
type and then printing that using the format machinery, byte values that were not valid single-byte UTF-8 characters failed to print correctly. I found this while trying to implement qsort()
because the output of my test program was mysteriously incorrect despite it working when I used glibc.
By the way, this includes the code from my previous PR as I was working off that branch. If you'd prefer, I can separate the commits.