Arrfunc proto refactor

This PR refactors the arrfunc prototype's type to be based on a tuple type containing positional arguments and a struct type containing keyword arguments.