Allow Eager Drops

Allow the compiler to drop objects that are no longer used before the
end of their scope. Rust's type system ensures that objects aren't
dropped too soon.  The programmer can explicitly specify an object's
lifetime if necessary.  Removes the need for drop flags.