Approximate patch, without documentation. If this is accepted, I can write documentation too. I submitted legal papers for FSF years ago.
(func-arity 'car) (1 . 1)
(func-arity 'caar) (1 . 1)
(func-arity 'magit-log-all) (0 . 2)
(func-arity 'format) (1 . many)
(func-arity (lambda (&rest x))) (0 . many)
Return value is the same as with `subr-arity' except here any callable is accepted and you don't need `symbol-function' or `indirect-function'. Autoloading is also supported transparently.