A general multi-configuration Hartree-Fock program