avoid alloca in with_overflow intrinsics

This is pointless, since it's just used to load an `undef` value and
never touched again.
Check enums in missing_doc lint

Closes #9671
auto merge of #9680 : thestinger/rust/overflow, r=huonw

This is pointless, since it's just used to load an `undef` value and
never touched again.
auto merge of #9675 : sfackler/rust/lint, r=alexcrichton

Closes #9671
Rewrite lint passes with less visitor cruft

This purges about 500 lines of visitor cruft from lint passes. All lints are
handled in a much more sane way at this point. The other huge bonus of this
commit is that there are no more @-boxes in the lint passes, fixing the 500MB
memory regression seen when the lint passes were refactored.

Closes #8589