Allow I/Os to be aggregated across ZIO priority classes
Combine reads and writes, irrespective of their priorities into unified, offset sorted, trees. Selection of the ZIO to issue is unchanged, but aggregation now uses the unified tree of the appropriate type so that aggregation across priority classes is possible.
One consequence of this change is that now sync writes can be aggregated with each one. This improves performance in configurations without a SLOG device and lots of WR_INDIRECT ZIL write record. In that case ZIL writes are interleaved with data block writes and both kinds of writes have sync write priority.