[WIP] explicit Fortran interface to libcint
This PR provides a working Fortran interface using modules and the iso_c_binding module to several libcint routines. The point of this work is to have a interface that does not rely on the use of external for the functions and provides a clean API for use of libcint in Fortran.
Two interfaces have been created, one that is directly to the C code using c_double and other iso_c_binding types and a "Fortran first ish" one that casts integer, parameter :: dp = c_double so that people can use real(dp) which is a bit more Fortran-esque than using c_double.
I've asked an LLM to create some docs of the new interfaces and provide some in code documentation and comments. I've heavily edited the LLM generated docs.
I have also provided examples of the new Fortran interfaces and separated them in the examples directory.
I am attempting to create a script that would generate these modules/interfaces automatically form the C code but I'd like to get some feedback first!
It looks like 4k lines of code but most of them are reporting the examples files, the include/ changes are just ~800 lines ish total.