Exported register struct/class need to be in their own namespace

register names are only unique to the module, so there may be multiple registers that have the same name. In C++ this means that register classes should be in their own namespace (presumably a module namespace), and in C this means that register struct name needs to be prepended with the module name.