Try to remove ty_nil, some kind of error in exhaustiveness checking
Complete the removal of ty_nil, ast::LitNil, ast::TyBot and ast::TyUniq

[breaking-change]

This will break any uses of macros that assumed () being a valid literal.
Update tests accordingly
Update the reference
auto merge of #18752 : jakub-/rust/remove-unit, r=eddyb

Closes https://github.com/rust-lang/rust/issues/18614.
Add a function to copy from a Reader to a Writer