Adding OutputFormatter base class

Should this delegate to `WriteObject`? What's the purpose of providing `WriteObject` and this method?