Allow AggregateRepository to return packages if one repository fails.

Previously when IgnoreFailingRepositories was true and the Search
method was called on the AggregateRepository then if any
repository throw an exception then this exception would not be caught.
The other methods on AggregateRepository do not have this behaviour.
GetPackages, for example, will not throw an exception if one package
source throws an exception. All the methods on AggregateRepository
apart from Search use the Wrap method to handle any exceptions thrown.

Now when IgnoreFailingRepositories is true calling the Search will now
return packages even if one package source fails. The Search method
now also uses the Wrap method to handle any exceptions thrown.
Give AggregateRepository classes access to failed repositories.

When IgnoreFailingRepositories is true and a repository fails a
derived class is now informed about the failure instead of the error
just being logged.