Add blacklister to repository management (#3047)Fix https://github.com/gradle/gradle/issues/2853Previous versions of Gradle would fall through to the next repositoryif resolution in one repository failed. This may cause potentiallyindeterministic resolution result. This PR changes this behaviourand will explicitly rethrow exceptions which occur in dependencyresolution instead of quietly continue to the next repository.What's more, this PR introduces a RepositoryBlacklister. Exceptionsthrown during dependency resolution are categoried as follows:1. Caused by HTTP error status code (other than 2xx/3xx/404) These exceptions would be considered as "recoverable" since the server seems still to be able to respond.2. Caused by other IOException/UncheckedIOException These exceptions would be considered as "unrecoverable" and the repository would be blacklisted in the build.