Dynamic password; Extra headers parsing and checking

Framework complete, now just need to try and implement inflation...
Can decrypt first entry. Reads data descriptor

* The data descriptor present after the compressed data is now read
  if the data descriptor flag is set in the general flags. This means
  the compressed size is now reported correctly, even if the compressed
  size field in the local header is set to 0.
* Can deal with any (otherwise supported) compression method within the
  encrypted block. NB. iZip (the only Mac app I know that creates AES
  zip files) uses BZip2 compression (12) for the data before encrypting it
  and rubyzip does not support this style of compression!