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
I was actually conflicted on whether to use IOException or RemoteException. IOException seems to be too general to me and RemoteException makes it more specific : "A RemoteException is the common superclass for a number of communication-related exceptions that may occur during the execution of a remote method call. " 
I don't have too strong opinion about it but what do you guys think? Shouldn't we be throwing a more specific exception rather than IOException?