~~~~~~~~~~~~~~
* Added support for oauth2 (Resource Owner Password Credentials Grant) for
muninn-pull and added oauth2 support to the auth_file credentials file.
* url prefixes can now be used as keys in the auth_file credentials file
(instead of only hostnames).
* muninn-pull will now auto-unzip a downloaded file if the downloaded filename
equals core.physical_name + '.zip' (or '.ZIP').
* Improved memory efficiency of muninn-pull. Files are no longer read fully
in memory when downloading.
* Added new plugin attribute 'hash_type', to specify hash algorithm
(matching hashlib module). The 'use_hash' attribute has been deprecated.
core.hash will now contain '<type>:<hash>' as content. Existing core.hash
values will still be treated as sha1 hashes for backward compatibility.
* Fixed issue where enabling indices on Geometry fields did not work.
* Archive.retrieve() and Archive.retrieve_by_name() now return a list of
product paths. Archive.retrieve_by_uuid() now returns a single path.
* Added Archive.delete_properties_by_uuid().
* Added download_args, upload_args, copy_args, and transfer_config options
to S3 storage backend.
* Added (optional) product type plugin attribute 'namespaces', which
contains a list of names of non-core namespace names of properties that
plugin.analyze may return. Those non-core properties are now also passed to
the other plugin methods.
* Removed `muninn-update --namespaces` option, as this should now work
automatically.
* Added product plugin method 'post_remove_hook' that is called after a
successful remove.
* Changed `muninn-update -a <action>` command to `munnin-update <action>`.
* Changed `muninn-ingest -c` command to mean 'catalogue only'.
* Added basic 'in' and 'not in' operators (so that e.g. the following works:
`physical_name not in ["a", "b"]`)
* Namespace records can now be removed with Archive.update_properties() by
passing: `Struct({'mynamespace': None})`