card_key_provider: move boiler-plate code into helper functions
in pySim-shell.py we add the commandline options for the card key provider and do the setup accordingly. Let's put this boilerplate code into helper functions instead, so that we can re-use it in other pySim programs as well. Let's use pySim.transport as a pattern.
card_key_provider: pass CardKeyFieldCryptor to constructor
We currently create the CardKeyFieldCryptor object inside the constructor of the concrete CardKeyProvider classes. There is currently no problem with that, but when we create the CardKeyFieldCryptor object first and then pass it as parameter to the constructor, we gain more flexibility in case we want to support other CardKeyFieldCryptor variants in the future.
card_key_provider: add a static method to parse --column-keys args
The contents of the --column-keys arguments are currently parsed in init_card_key_provider. Let's add a static method in CardKeyFieldCryptor to simplify re-usage of the CardKeyFieldCryptor
In format string we prepend when we log in verbose mode. We use %(module)s as format string quaifier. This qualifier is replaced with the name of the module from where the logger was called. This is mostly equal to the logger name (__name__) we pass when we create the logger.
However, this is not the behavior we actually want. We want to log the logger name that we passed when the logger was created. For this, we must use %(name)s as qualifier.