Remove ty_bot from the type system

We now instead use a fresh variable for expressions that diverge.
Update tests with the new error messages
Address review comments
auto merge of #17603 : jakub-/rust/ty_bot, r=nikomatsakis

We now instead use a fresh variable for expressions that diverge.

Closes #14973.
Closes #13847.

[Work in progress]

cc @nikomatsakis