implement encodeAs and support passing map as argument to configure all 3 encoders separately
refactor out EncodedAppender implementation base class
implement EncodedAppender that writes to Writer
add EncodedAppenderFactory to mark a Writer that has a EncodedAppender available