introduce fancy_source_error handler for friendlier error messages
introduce fancy_source_error handler for friendlier error messages

this is just about being nice to the users when they screw up their
upstream.source lines

the python function call mechanism itself is used to enforce the
structure of the arguments to the fetch_*_source handlers, which
is a nice thing, except that the TypeError's raised might not make
what's broken about the situation very clear

so, inspect the fetch handler's argument layout and try to tell the
user something meaningful about what went wrong

in the case where they provided an unexpected argument, the TypeError
message is actually fine, and in that case we log it directly


(SOFTWARE-3568)

matyasselmeci/osg-build,matyasselmeci/osg-build,opensciencegrid/osg-build,opensciencegrid/osg-build