A binary signature which can match one or more file formats.
It is composed of a list of {@link ByteSequence} objects,which are like regular expressions that can match bytes.
A signature runs each ByteSequence against a target file, until one of them doesn't match, or all of them do.
It orders the ByteSequence objects to try to ensure optimal matching behaviour - e.g. the ones anchored to the start of the file are done before ones at the end of the file.
@author Martin Waller
@author Matt Palmer
@version 6.0.0