Synthesize a suitable fileMode for MS-DOS or NTFS entries (fix #47)
Remove libc++ dependency

* Build without C++ or Objective-C exception support.

* Use scope guards to cleanup resources instead of @try/@finally blocks.
Composable inflate input streams

* Inflate input streams are now composable with other input streams.

* Provide old archive entry data through single step inflating via [ZZInflateInputStream inflateData:withUncompressedSize:], instead of streaming.

* Encapsulate CGDataProviderRef creation in ZZDataProvider class, dropping non-standard rewind and skipForward methods on ZZInflateInputStream.
Standard (weak) PK decryption support. Basis for future AES decryption support.
proper member functions to manager ZZExtraField
breaking change: remove non-error stream message
moved encryption mode detection from init to local methods
added out keyword to all NSError**
Encrypted property on archive entry instead of archive
Merge pull request #49 from Danielgindi/master

Standard PK (weak) decryption support, with basis for future AES decryption support.
Refactor decrypter classes

* Decrypter classes are now Objective-C protocols/classes instead of C++ abstract/concrete classes. This avoids C++ virtual functions which are unsupported without the libc++ runtime.

* Standard crypto engine is now mostly inlined for performance.

* Encryption mode is now detected early but unsupported decryption errors are only triggered when read is attempted.

* Encryption CRC check moved to check: method.
Refactor decryption and decompression handling

* Compose decryption and decompression streams based on header fields in a single method. This method also removes the need for a separate ZZDecrypter hierarchy.

* Check for unsupported compression methods.

* -[ZZArchiveEntry newStreamWithError:] now always calls -[ZZArchiveEntry newStreamWithPassword:error:].
Fix old archive entry sanity check not actually working
Refactor zip headers

* General purpose bit flag is now an enum class with bitwise operators.

* Extra field member function can now return a desired type (for future expansion).

* More AES types spelled in the correct case.
added WinZip AE versions and extra field salt lengths
added AES tests
ZZWrongPassword, for cases when we KNOW that the password is wrong
our AES core
an AES input stream
taking the AES input stream into account, self.compressionMethod should always be used.