Previously modernize-avoid-bind only supported the case where the function to call was a FunctionDecl. This patch makes it support arbitrary expressions, including functors, member functions, and combinations thereof.
This change actually *simplifies* the code rather than complicates it, because it assumes that the first argument to std::bind() is always a callable, otherwise it wouldn't even compile. So rather than limiting ourselves to DeclRefExprs, we just accept any kind of expression for the first argument. Fixits are still only applied in the same set of limited cases as before, although I plan to improve this in followup patches.