Improve the correctness of Root lifetimes

Use the new lifetime bounds feature of Rust to enforce that the
RootCollection field of Root outlives the jsref field. This still
doesn't enforce that the Root itself outlives the jsref field, and
doing this would require some sort of init dance.
Merge pull request #3493 from zwarich/root-lifetimes

Improve the correctness of Root lifetimes

Reviewed-by: jdm