This function figures out whether the input function is a
regular/primitive/internal function, a internal/S3/S4 generic, or a
S3/S4/RC method. This is function is slightly simplified as it's possible
for a method from one class to be a generic for another class, but that
seems like such a bad idea that hopefully no one has done it.