Port PtDebugPrint to C++

This has a couple of benefits:
- We should theoretically no longer run into UnicodeDecodeErrors from the
  plString-based implementation
- By doing things engine side, we can use the logging API to colorize log
  messages.