Add printers

It will allow to specify different ways of printing to IO (STDOUT, or
somewhere else, e.g. sockets). We need that for adding IDE support,
since it is more convenient for them to communicate via XML or JSON or
something like that instead of just plain text.