Improvements in fetching uniprot entry using uniprot accession id

Improvements:
1. added uniprot id pattern matching to fail-fast on wrong uniprot ids
2. added retrying netwrok request if id is not available immediately
3. bubbling-up the error codes in case uniprot servers are down
Wouldn't this simply be an IOException? If I understand what would happen here is that after 5 attempts of server responding with error status, we give up and throw exception. It makes most sense if it's IO, since the end user should see that in the same way: IOException can happen either by a failed connection to the server or after 5 attempts with bad responses.