BWT iterators

BWT is split into Suffix Array Construction (SAC) and iterating through the output. Same goes for the inverse-BWT.

This makes the system more modular, and allows users to provide custom (more efficient) suffix array constructors (i.e. link to libdivsufsort), while still enjoying iterating over the BWT output.