rename `type_function_param` to `type_function_arg`
rename `(cl|en|t|a|mt)_types` to `_params` for consistency
rename `unify_call_params` to `unify_call_args`
rename `unify_types` to `unify_type_params`
add naming conventions
split Abstract module and move underlying type handling to type.ml
add `Abstract.follow_with_abstracts`