Refactor encryption key structs and add Agile Keychain format documentation

 * Add documentation about the meanings and representations of various
   fields in the encryptionKeys.js and contents.js files

 * Be consistent about using base64-encoding for the `data` and
   `validation` fields for encryption key entries.

 * Rename Vault.hint -> Vault.passwordHint