Switch to #pragma once and reimplement ATTRIBUTE_UNUSED macro
Two things happening here. The first is to switch our header files to more modern #pragma once, and the other is to not rely on libxml2 to provide ATTRIBUTE_UNUSED macro, but to declare it ourselves.