Fixes a race in updating input_entry_count_ and output_entry_count_ in parallel_shard_exit in the record_filter analyzer.
Moves aggregation logic to print_results instead. Like other analyzers, we now keep track of all shard data pointers and free them in the destructor instead. We destroy the writer object in parallel_shard_exit itself though, for symmetry with how it's created (in parallel_shard_stream_init) and so that users don't have to destroy the record_filter_t object itself for output files to be written out.
Issue: #5675