rust-needsdrop: support quiet_early_drop attribute for individual types.

Note that such quieting is not transitive, nor does it check the
interior of the structure.  E.g. given quiet_early_drop `S`,
`Option<S>` is still loud, at moment.  (I want to see how much bang
for buck I get out of this simple version, though I suspect a trait
bound is probably inevitable.)
root testsuite: test quiet_early_drop attribute.

In tandem, test quiet_early_drop and unmarked_early_drop lint settings.
rust-needsdrop: Make by-ref closures implicitly #[quiet_early_drop].

The reasoning here is that by-ref closures cannot have any
side-effects when they are dropped (hile by-move closures might have
side-effects when dropped).
result-generalization: add `try_map_rev` to VecPerParamSpace.
FIXME rust-needsdrop checkpoint: mashup of foundational support for `trait QuietEarlyDrop`.

Most critical, generalized `lookup_vtable` to return a Result so that
we can use it as the basis for a `is_type_impl_of_trait` predicate.

There is a lot of other hackery mixed in here though (e.g. artifacts
of other false starts), so this commit needs some heavy history edit
love to trim it down to its cricial core.
rust-needsdrop: Add `trait QuietEarlyDrop`.
root testsuite: Add various tests of things I added or tried to add over the weekend.

foo45: test of treating a local variable read as pure, w.r.t early-drop.
I later realized that this is not necessarily sound, which you can see
illustrated in the next test.

foo46: illustration of how an impure drop can write to a local
variable. (I am pretty sure that interior mutability means that one
can construct examples of this that do not even employ any unsafe
code. I should try to make such an example.)

foo47_fine: Simple example of `QuietEarlyDrop` trait implemented directly.

foo48_warn: Simple example of `warn(quiet_early_drop)` attribute.

foo49_fine: Simple example of `Quiet_Early_Drop` trait implmented indirectly.

foo50_warn: Simple example of `Quiet_Early_Drop` trait *not* implmented indirectly.
root testsuite: some more cases uncovered while bootstrapping.
rust-needsdrop: checkpoint.  Gets through all existing warn/fine; but ICE's on num01.rs.