Change how DataSourceFormats are handles internally.

This and the addition of implicit UDT generation makes it easy to implement custo DataSourceFormats. I noticed the need for this from @rmetzger's avro input format.