ENG-14528: Handle single table truncate with empty producer partitions
ENG-14528: Handle single table truncate with empty producer partitions

When a table is truncated each partition adds the truncate to its own
binary log. However this previously was only being done if the partition
was not empty. This was causing problems with the fix for ENG-14444 to
line up the truncates and apply them at the same time. In order to
handle some logs have truncate and others not the logs are sorted first
by the ones which have a truncate and the ones that do not. Then the
logs with a truncate are processed up to the truncate and then the
truncate is applied and then the remainder of all logs are processed.

This fix works only when a single table is truncated in a transactions.
If multiple tables are truncated the BinaryLogSink will most likely
throw an exception when it finds a truncate for a table other than the
one it expected.

VoltDB/voltdb,VoltDB/voltdb,VoltDB/voltdb,VoltDB/voltdb,VoltDB/voltdb,VoltDB/voltdb,VoltDB/voltdb