- change interface of `type_generic_function` to deal with overriding (closes #3592)
- also make inline actually work