optimize #unpack and remove limitation of position instructions
update changes
tweak externs and use bytepos API to change positions
use plain ZScan::BinarySpec.new instead of factory method ZScan.binary_spec
add expect instructions