Add ability to configure recursion limit.

Fixes #19318.
Kill dead code
Stop masking overflow and propagate it out more aggressively; also improve error reporting to suggest to user how to fix.
auto merge of #19466 : nikomatsakis/rust/recursion-limit, r=eddyb

This is particularly important for deeply nested types, which generate deeply nested impls. This is a fix for #19318. It's possible we could also improve this particular case not to increment the recursion count, but it's worth being able to adjust the recursion limit anyhow.

cc @jdm 
r? @pcwalton
Merge remote-tracking branch 'upstream/master'