Rewrite so that we get a getter structure when it comes to the init(), main() and TibiaDataInitializer() functions.
Currently we have multiple initialisation tasks, logging, and environment variable handling, which makes it difficult to test individual components and increases complexity.
Codecov gave this during #452:
Attention: Patch coverage is 55.17241% with 13 lines in your changes missing coverage.