This patch introduces a DIPrinter interface to implement by different output style printer implementations. DIPrinterGNU and DIPrinterLLVM implement the GNU and LLVM output style printing respectively. No functional changes.
This refactoring clarifies and simplifies the code, and makes a new output style addition easier.
I'd be inclined to omit the DI part of this name. We're in a distinct namespace, and I'm not sure the DI prefix gives us anything.