FIFO compaction policy selects only files which have all cells expired.
The column family MUST have non-default TTL. One of the use cases for this
policy is when we need to store raw data which will be post-processed later
and discarded completely after quite short period of time. Raw time-series vs.
time-based roll up aggregates and compacted time-series. We collect raw time-series
and store them into CF with FIFO compaction policy, periodically we run task
which creates roll up aggregates and compacts time-series, the original raw data
can be discarded after that.

candidateFiles - candidate files, ordered from oldest to newest by seqId. We rely on
DefaultStoreFileManager to sort the files by seqId to guarantee contiguous compaction based
on seqId for data consistency.

isEmptyStoreFile

The FIFOCompactionPolicy only choose those TTL expired HFiles as the compaction candidates. So
if all HFiles are TTL expired, then the compaction will generate a new empty HFile. While its
max timestamp will be Long.MAX_VALUE. If not considered separately, the HFile will never be
archived because its TTL will be never expired. So we'll check the empty store file separately.
(See HBASE-21504)