Implement semantic versioning

Using semantic versioning (SemVer) brings along a specification larger than just the MAJOR.MINOR.PATCH system.

https://semver.org/

-> Public API, for now we're fine with 0.Y

Major version zero (0.y.z) is for initial development. Anything MAY change at any time. The public API SHOULD NOT be considered stable.

But with 1.0 we need to define a stable API, which would mean "how" functions are accessed should not change anymore. %"Version 1.0"

Only immediate change would be to add a .0 to %"Version 1.0" %"Version 0.3" and %"Version X.Y"