Fix version identification in the project

Currently the version of the client released is dictated by setup.py. I would like to limit the possibility for error by automating that task. There are some conventions that need to be followed per python specs: https://www.python.org/dev/peps/pep-0440/

Suggested solution:

Integrate poetry into the project and ci: https://pypi.org/project/poetry-dynamic-versioning/ https://nicholasnadeau.com/post/2020/8/one-version-to-rule-them-all-keeping-your-python-package-version-number-in-sync-with-git-and-poetry/

Business Value

Predictable releases. Errors in version specifications can lead to tag overwrites. We need to all be inline with how we merge incoming MRs.

Edited by Ton van Bart