Lifetime constraints on functions
We should understand better the exact lifetime constraints Rust implicitly assumes on functions, and make sure we handle them accurately.
Currently we get the constraints we impose from Polonius, but this doesn't include lifetime bounds on generics (outlives bounds).
rustc
's ParamEnv::caller_bounds
API also does not seem to list constraints that are not explicitly annotated -- maybe because they are implicitly assumed to be true as part of validity invariants.
Potentially we should require ty_wf_E
for all argument types?