rewrite printf's using callback functions

Macro implementation suffers from difficulty of debugging.

Changes:
PRINTF_BODY -> vprintf_core
_PUTC_ -> _putc_ (callback function)
_PUTS_ -> _puts_ (callback function)