We need ResolveXXX() to throw on error (for errors occuring at resolution time - for more static errors discovered by the source, use #421) - and let "null" be returned when the source simply does not have the requested url.
For the MultiResolver - this would mean either
- On exception - try the other sources, if all fail return the first exception
- Or create a new MultiResolverResolutionException with a list of all exceptions encountered (much like the AggregateException on Task)