CDK-492: Add DurableParquetAppender.

This appender wraps an AvroAppender and a ParquetAppender to provide
durability by writing to Avro in tandem with writing parquet files
directly. After the file is closed, the avro copy is removed in a new
cleanup phase in the appender. Any failure requires recovery using the
Avro files.
Yes, I think it's fine to have these as part of the FS portion of the SPI. Advanced applications would need to take advantage of the non-durable writes and writer cache size props.