[ ] Create abstract engine class to support other enhancements, and construct with a builder
[ ] Support unsorted files - the engine in this case should hold all the windows without flushing until the traversal is finished. This have a performance cost, but it will be useful to analyze raw mapped data before sorting.
[ ] Add support for sliding-window analyses - I believe that the current implementation supports this traversal, but depends on how the engine is optimized (https://github.com/magicDGS/ReadTools/issues/458) if this will continue working.
[ ] Remove no-interval parameters requirement. This depends on GATK making accessible the intervals for traversal (to make the windows) and GATK making a public method to change intervals for traversal within reads (before starting traversal). Another option is to implement a pair-end walker using something like https://github.com/broadinstitute/gatk/issues/4849