The Gen1Int interface at Dalton/Dirac is organized as:

  gen1int_host.F90:      subroutines which could be called by host programs (even Fortran 77)
          |
  gen1int_api.F90:       module of API of Gen1Int interface (some subroutines are host program specific)
          |
  gen1int_shell.F90:     module of AO sub-shell, might be portable with minor changes
          |
  gen1int_matrix.F90:    module of matrix interface, will be replaced by QMatrix library

Needless to say, introducing gen1int_matrix.F90 and gen1int_shell.F90 makes the code be
simpler and more compact. The parallelization is implemented in gen1int_shell.F90 using
a simple manager/worker scheme.

The module gen1int_api.F90 defines the AO sub-shells in host programs and corresponding
subroutines. Indeed it could be used directly by other Fortran 90 subroutines in host
program, with the requirement that the parallelization environment and input arguments
are already set on all involved processors.

For instance, Dalton/Dirac use the manager/worker scheme, and the manager first needs to
wake up the workers (broadcasts appropriate integer, see subroutine \fn(DALTON_NODEDRIVER) in
eri/eri2par.F), and broadcasts all input arguments. Therefore, to facilitate the job, we
implemented these in file gen1int_host.F90. Also, there are some Fortran 77 codes in
Dalton/Dirac which might use Gen1Int interface. It is thus more appropriate to use
gen1int_host.F90 (with basic Fortran types as arguments) instead of a Fortran 90 module.

Therefore, gen1int_host.F90 works like a Fortran 77/90 adapter in some sense (it also
sets the parallelization environment on all processors).
