CI Improvements and OCaml 5.0.0 compatibility
This MR serves several purposes:
- it improves slightly the CI speed by locally caching builds between CI jobs
- it replaces the OCaml 4.14.0 docker image with OCaml 4.14.1
- it replaces the unofficial 4.12.0+domains image (multicore preview) with 5.0.0
- while doing so, it fixes some compatibility problems with 5.0.0
The compatibility problems solved with 5.0.0 are:
- update the OCaml/CDuce interface to the new way OCaml's setup its load paths
- remove references in the OCaml/CDuce interface to 'unsafe strings' (mutable strings) since these where removed after being deprecated
- make the pretty-printing not subtly depend on a probabilistic data structure, which changed the output of types when OCaml's PRNG changed (as it did with OCaml 5.0.0).