build: kotlinc output caching for faster CI builds
build: kotlinc output caching for faster CI builds

The compilation of Kotlin code (Genenator and the binding Templates) has
always been the slowest part of the LWJGL build process. It is also done
repeatedly, once for each of target platform and once for the build that
brings everything together. LWJGL has grown so much now, that the CI
machines cannot cope with kotlinc's CPU & memory usage requirements.

This commit adds two targets:

- cache-kotlinc: uploads a cache of Kotlin's compilation output to
  build.lwjgl.org. This can only be done by LWJGL maintainers with write
  access to the S3 bucket.
- hydrate-kotlinc: downloads the cache from S3, validates that there is
  no mismatch between the current and the cache's commit, then extracts
  the pre-compiled class files to the local repository.

This should significantly speedup the CI builds and builds by other
users.

TheMrMilchmann/lwjgl3,LWJGL/lwjgl3,LWJGL-CI/lwjgl3,code-disaster/lwjgl3,code-disaster/lwjgl3,LWJGL-CI/lwjgl3,code-disaster/lwjgl3,LWJGL-CI/lwjgl3,code-disaster/lwjgl3,TheMrMilchmann/lwjgl3,TheMrMilchmann/lwjgl3,TheMrMilchmann/lwjgl3,LWJGL-CI/lwjgl3,LWJGL/lwjgl3,LWJGL/lwjgl3,LWJGL/lwjgl3