A new field on the FileHeader struct called Password
of type PasswordFn will be set when either reading
or writing a password protected zip. The previous
method was unsuitable due to the ambiguity of
an empty password "" and no password. This new
way can now differentiate the two.
This will unify the reading and writing API. Eventually
the SetPassword function will be deprecated in favor
of a Password field that is of type func() []byte. This way
the password can be set dynamically. This will also help in
differentiating a nil password and an empty password.