Fix the generation of foreign modules (which are not a functor)
Change some default paramater to be optional

warning: this will cause existing config.ml to certainly break