Centrally prep args for calls/yields

Refactor to ensure at the BlockBody level that args are properly prepped
for calls and yields (arity checking for lambdas, arity trimming
for other blocks).  This doesn't guarantee all calling codepaths are
covered (an irresponsible override of some of BlockBody's methods can
get around it), but definitely moves in the right direction.

This lets us delete some ad-hoc prepping we were doing, and fills some
gaps where args should have been prepped but were not (so, for instance,
we can untag the Enumerable#any test now that its block args are being
treated correctly).