This should move all of the remaining interfaces out of basedoc, except for IDispatchEx (and some fields will still remain); those will be for next MR. Because all of the remaining interfaces are in the `htmldoc.c` file, and they typically tend to just forward to the HTMLDocumentNode, I'm using some macros inspired by the HTMLWINDOW7_ONEVENT_PROPERTY_\* in `htmlwindow.c` to reduce duplication. The ones that are exceptions are implemented normally without macros. The first commit converts all of the non-IHTMLDocument\* interfaces because most of the methods are FIXMEs/unimplemented, so splitting it up isn't worth it. -- v3: mshtml: Move the IHTMLDocument7 interface out of basedoc. mshtml: Move the IHTMLDocument6 interface out of basedoc. mshtml: Move the IHTMLDocument5 interface out of basedoc. mshtml: Move the IHTMLDocument4 interface out of basedoc. mshtml: Move the IHTMLDocument3 interface out of basedoc. mshtml: Move the IHTMLDocument2 interface out of basedoc. mshtml: Move the remaining non-IHTMLDocument* interfaces out of basedoc. mshtml: Move HTMLDocumentObj implementation to oleobj.c. https://gitlab.winehq.org/wine/wine/-/merge_requests/1125