Improved validation of a sponsor's email address

When validating a sponsor's email address, we used to only check the
first source that returns a username for the specified email address,
which would cause a problem when the email address was found in multiple
sources but the 'mark as sponsor' action was set only for one the
sources. With this commit, we let each source's "match" implementation
handles the possibility that an email address is specified instead of a
username.
Allow actions depending on auth source type