Change OutputFormatSnakFormatterFactory to construct a DispatchingValueSnakFormatter based on factory callbacks from DataTypeDefinitions, similar to how OutputFormatValueFormatterFactory. If possible, the fallback logic using automatic escaping used for ValueFormatters should be re-used for SnakFormatters.
OutputFormatSnakFormatterFactory should fall back to a GenericValueSnakFormatter for any datatype that has no specialized SnakFormatter associated. That GenericValueSnakFormatter would be based on a DispatchingValueFormatter provided by OutputFormatValueFormatterFactory.