Change the return type of fh_arg_len().

The return type of the original fh_arg_len() was signed, but it was guaranteed that the function never returned a negative value. Some parts of the code assumed so and compared values returned by ARGLEN() with values of unsigned types. The change seems to make sense and it silences a few compiler complaints.

I left INT_MAX as the limit, because I don't know if it's a design choice. If it's not, consider changing it to UINT_MAX and reconsider the comment made in Array.c, line 44.