Merge branch 'release-v0.9.0'
Release v0.9.0

This minor release refactors the PWS access.
Replace SLOT_COUNT with get_slot_count

This patch adds the get_slot_count method to the PasswordSafe struct and
deprecates the SLOT_COUNT constant.  That constant was poorly named, and
hardcoding the number of available slots is not future-proof.
Refactor PWS slot access

Previously, the PasswordSafe::get_slot_{name,login,password} methods
would return a SlotNotProgrammed error if the libnitrokey functions
return an empty string.  This was because libnitrokey does not return an
error code when accessing an unprogrammed slot.  But this was ambigous
as the slot values might actually be empty.

With this patch, we deprecate the existing methods for accessing the
slot data.  Instead, we introduce the PasswordSlot struct that can be
used to access the (empty or non-empty) values of programmed slots.
Instances of this struct can be obtained using the get_slots (all
programmed slots), get_slot (one slot that is checked to be programmed)
and get_slot_unchecked (one slot without checking whether it is
programmed) methods.

See this discussion for more information:
Fix example for PasswordSafe::write_slot

Previously, the documentation for the PasswordSafe::write_slot method
contained an example that only showed the usage of the get_slot_*
methods.  With this patch, we demonstrate the usage of the write_slot
method instead.
Add libusb dependency to archlinux.yml

As we use the hidapi-libusb backend, we have to make sure that the
libusb dependency is installed in the archlinux.yml build script.
Add missing python-pip dependency to lint.yml

The resuse AUR package is apparently missing the python-pip dependency,
causing a build failure.  This patch manually adds the dependency to the
lint.yml build script.
Implement From<LogLevel> for i32

Previously, we implemented Into<i32> for LogLevel.  As implementing From
is preferred over Into, this patch replaces this implementation with
From<LogLevel> for i32.
Merge branch 'release-v0.8.0' into next
Merge branch 'release-v0.8.0'
Release v0.8.0

This minor release updates the nitrokey-sys-rs/libnitrokey dependency to
v3.6.0 and adds support for the Librem model.
Update repository URL in Cargo.toml
Update repository and triggers in build scripts

This patch updates the Git repository in the build scripts to point to
git.sr.ht instead of git.ireas.org.  Also, as we no longer add our own
triggers when submitting the builds from ireas.org, we have to add
triggers to the builds.  Finally, we disable the signature check when
the build is triggered from lists.sr.ht.
Update readme

This patch updates the following points in the readme:
- Change Nitrokey UG to Nitrokey GmbH.
- Add contributing information.
- Change the project mailing list from nitrokey-rs-dev@ireas.org to
Merge branch 'nitrokey-sys-v3.6.0' into next

This patch series updates the nitrokey-sys dependency to version 3.6.0
and makes use of the new features.
Update deprecated functions in readme

With libnitrokey 3.6, two more functions have been deprecated.
Support the Librem Key model

This patch adds support for the Librem Key model, a clone of the
Nitrokey Pro.  Functionally, it is identical to the Nitrokey Pro, but it
has a different USB vendor and product ID.

With this patch, we also change the Display implementation for Model to
return the complete name of the model, i. e. Nitrokey Pro, Nitrokey
Storage or Librem Key.
Add get_struct utility function

This patch adds the internal get_struct utility function that can be
used for querying a struct with a libnitrokey function that uses an
output parameter.  Instead of this:

    let mut out = R::default();
    get_command_result(op(&mut out))?;

We can now write this:

    get_struct(|out| op(out))
Use Default::default for nitrokey-sys structs

Since version 3.6.0, nitrokey-sys derives the Default trait for all
structs.  This allows us to simplify code snippets where we have to
construct an empty struct that is then filled by nitrokey-sys.
Use NK_config struct for configuration handling

Previously, the Nitrokey configuration was represented as an array in
libnitrokey.  libnitrokey 3.6 added the NK_config struct and the
NK_{read,write}_config_struct for type-safe configuration handling.
This patch replaces the old functions with the new versions using the
NK_config struct.  This makes the RawConfig struct obsolete as it is
identical to NK_config.
Correctly free pointer to PWS status

The NK_get_password_safe_slot_status function returns a pointer to an
array that has been allocated using new[].  As we only have access to
libc’s free function, we could not free this pointer properly (using
delete[]).  libnitrokey 3.6 added the NK_free_password_safe_slot_status
function which we now use to properly free the pointer.