Make std::io::TempDir::{new, new_in} accept a BytesContainer as a suffix

This pull request addresses #19437.  It was mentioned that Paths can be constructed with any `BytesContainer`, whereas `TempDir`'s constructors specifically require an `&str`.  There's no reason that `TempDir`'s constructors shouldn't be able to accept any `BytesContainer` however, so long as the suffix is a valid UTF-8 string.

Closes #19437.
By moving the suffix out of the format!() and instead appending it to the bytes generated by the `format!("rs-{}-{}", ...)`, the need to convert to a str is removed.