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.
We shouldn't scatter descriptor properties throughout the codebase. Putting them in DatasetDescriptor would be better. The `isTrue` code should live there too.