The work for this commit was outlined by the third item from the TODO:
> ### The `DESFIRE_TRANSCEIVE` macro should be replaced by a function ###
>
> `DESFIRE_TRANSCEIVE` was originaly a macro to enclose a
> `nfc_initiator_transceive_bytes()` call with debug lines. The
> functions has unexpectedly grown up and is now between 25 and 100
> lines of code (depending of my refactoring mood). The main
> drawbacks are poor readability, redundant code in the binary,
> debuggers don't cope well with macros, and by design it sucks.
Thanks @broth-itk for submitting this change.