Encode takes two arguments, a raw password, and a pointer to an Options struct.
In order to use default options, pass `nil` as the second argument.
It returns the generated salt and encoded key for the user.
Verify takes four arguments, the raw password, its generated salt, the encoded password,
and a pointer to the Options struct, and returns a boolean value determining whether the password is the correct one or not.
Passing `nil` as the last argument resorts to default options.
type Options struct {
SaltLen int Iterations int KeyLen int HashFunction func() hash.Hash}
Options is a struct for custom values of salt length, number of iterations, the encoded key's length,
and the hash function being used. If set to `nil`, default options are used:
&Options{ 256, 10000, 512, "sha512" }