Cleanup invalid `derive(Trace)`
Currently we have some type implementations that derive the Trace trait unnecessarily, such as
https://github.com/boa-dev/boa/blob/master/boa/src/syntax/ast/constant.rs
This is far from ideal, because we're not marking them as dead ends for the garbage collector to ignore them, and instead the garbage collector has to visit every field, even if the fields are also dead ends. This adds redirection and impacts on the performance of the GC.
We should reevaluate every type implemented on our codebase with a more conservative approach: deriving Trace and Finalize only when strictly necessary (e.g. structs that need to be Trace because they transitively have a Gc inside them or structs that are used inside multiple types that need to be Trace) and instead try to use unsafe_ignore_trace and empty_trace a lot more.