[cleanup] refactor public interface headers and eliminate patchwork exports via genapi.pl
Currently DR's public interface headers are constructed from a patchwork of existing internal headers using the genapi.pl script. This issue covers refactoring the headers to properly separate the public interface portions into their own headers that can be directly exported, eliminating the need for a script and simplifying the project.