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.
This is the part that I'm unsure of.  I like the idea of changing the parameter from &str to BytesContainer because that matches Path, but ultimately the suffix must still be a UTF-8 string, so the first solution that came to mind was to just return an error like this if that isn't the case, and proceed otherwise.  But if we're just converting right to str anyway, does this commit make any sense?  Thought I'd throw the PR out to start the discussion though.