Use the custom defineProperty trap when it exists.
Correct the generated code or NamedSetter calls.
Factor out the name handling in Element::{Get,Set,Remove}Attribute.
Implement Element::set_custom_attribute.
Implement HTMLElement.dataset.