text: Title: Allow listeners to remove log messages by setting them to `None`
  Body: ## Context
  
  Issue #5089 proposed making it possible for listeners to remove log messages altogether by setting them to an empty string. It was not implemented for the following reasons:
  - It turned out that there are valid reasons to log empty messages and removing them can cause undesired results especially with `Log Many`.
  - The enhancement itself wasn't considered important enough.
  
  One of the things PR #5084 proposed was adding a new log level above INFO to make it possible to easily remove most of the messages. As I commented the PR, I don't think a new hard-coded level is a good idea, but we could make it possible to add custom levels. That is quite a big task, though, and I started to think that listeners being able to remove messages would provide similar functionality.
  
  ## Proposal
  
  Based on #5089 and #5084 it is convenient to be able to remove messages. This is my proposal how to do it without problems in #5089:
  
  - Allow listeners to remove messages altogether by setting them to `None`. In practice these messages simply aren't written to output.xml and thus they won't end up to the log file either.
  - For consistency, allow also model modifiers (`--pre-rebot-modifier`) to remove messages the same way. 
  - Make sure that everything logged normally is converted to strings. For example, `logger.info(None)` should log string `None` instead of the message being ignored.
  
  This ought to be a safe change because the last point makes sure normal logging isn't affected. The only risk I see that if one model modifier sets `msg.message` to `None` and then another does something like `if 'xxx' in msg.message`, there's a TypeError. We could prevent this by not supporting this functionality with model modifiers. With them it's possible to remove messages also otherwise with something like `msg.parent.body.remove(msg)`, but `msg.message = None` is simpler and consistent with listeners.