ENH: Expanding functionality for mixed source spaces and source estimates

Is this code used in both places? If so, please try to reduce code redundancy while you're at it using private functions. That way if we improve how the mapping is done, we can do it in one place.