A ByteSequence is a regular-expression like object that can match a target file against itself, but operating over bytes rather than text.
It is composed of a list of {@link SubSequence} objects,all of which must match for the ByteSequence as a whole to match.
Subsequences are effectively individual strings of bytes (albeit complex ones, including alternate strings and gaps), separated from each other by wildcard .* operators. If there are no .* operators in a ByteSequence, then there is only one SubSequence.
@author Martin Waller
@version 6.0.0