Don't always use "*args" for all Python wrapper functions.

Due to what seems like a bug introduced during Python 3 support merge, all the
generated Python functions used the general "*args" signature instead of using
the named parameters when possible.

This happened due to is_primitive_defaultargs() always returning false for the
functions without any default arguments as "value" passed to convertValue()
was NULL in this case and convertValue() always returns false for NULL.

Fix this by checking for value being non-NULL before calling convertValue().

And also check for INOUT parameters for which we do need to use "*args" as we
don't have any name for them. Finally, rename the function to reflect that it
does more than just check for the default arguments now.