e-xml: Add C api

Makes it easier to use with C projects (especially those that don't allow C++ code)
One of the reasons why C++ -> C API's leave something to be desired. We have to throw the type information away when the underlying type is a pointer to a class.