working pluggable formatter

Allow pluggable `Formatter`s, and subclassed  `HumanMessageFormatter`. The behavior is not changed.