rewrite rustup to support caching nightlies, protects against truncation errors

This closes #19168.

Please be careful reviewing this since this gets used all over the place. I've tested all the options and everything appears to be working though.
or... I may not know how to read bash. So let me confirm instead! This doesn't download from a specific date with no flags specified, right?