* pySim.ota.OtaDialectSms: Move SMS header construct up to class level
* pySim/ota: Don't modify input argument in OtaDialectSms.encode_cmd
* pySim.cat: Add more alredy-defined IEs to ProactiveCmd classes
* add contrib/saip-tool.py
* jenkins.sh: Include es9p_client in pylint
* pySim.tlv.COMPR_TLV_IE: Patch comprehension bit if derived class misses it
* pySim.cat: Make sure to always set comprehension bit in COMPR_TLV_IE
* pySim.tlv: Correctly parse COMPREHENSION-TLV without comprehension bit
* esim.saip: Add ProfileElementSequence.remove_naas_of_type
* global_platform/euicc: Implement obtaining SCP keys from CardKeyProvider
* CardKeyProvider: Implement support for column-based transport key encryption
* document the CardKeyProvider
* pySim.esim.saip: Meaningful constructors for [I]SD + SSD
* esim.saip: Implement ProfileElement.header_name for more PE types
* [pylint] Fix referencing undefined variable 'shutil'
* [pylint] Declare abstract LinkBase._send_apdu_raw() method as such
* [pylint] Fix float vs integer division in cards.py
* [pylint] Fix reference to undefined variable 'in_hex'
* [pylint] Mark abstract MagicSimBase class as such
* [pylint] Fix calling non-existing iteritems() of dict
* [pylint] Declare some fields in _MagicSimBase class
* [pylint] Mark abstract CardKeyProvider.get() method as such
* [pylint] fix non-existing 'res' in EF_CNL._encode_record_hex()
* Fix various mistakes around the CardADF <-> CardApplication dualism
* filesystem: fix various issues found by mypy
* filesystem: Avoid GPL header showing up in sphinx autodoc
* Use sphinx for generating documentation
* Add more documentation to the classes/methods