This patch removes the partial specializations for TypeBuilder for a specific number of function parameters and replaces them with specializations that use variadic templates to accept any number of parameters rather than a maximum of five.
Instead of using an array, these new specializations use the constructor of ArrayRef which takes an std::initializer_list. The advantage of this approach is that no special case for zero (non-ellipsis) parameters is needed.
I added a few tests for functions with up to eight parameters, as the previous limit of five parameters no longer applies.