Is there a programmatic way to access function/macro arguments,
Something like this, which returns the the arg count and true if it accepts any number of additional arguments.
eg:
(number-of-arguments-and-rest "if")
->'(2, t)
(number-of-arguments-and-rest "progn")
->'(0, t)
(number-of-arguments-and-rest "null")
->'(1, nil)