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
Alright I've just realised that RemoteException is a subclass of IOException, in that case I agree that RemoteException is more specific and better. The nice thing is that as it is a subclass of IOException the user only needs to worry about catching the IOException. So let's leave it as it is then, sorry about the confusion!

One unrelated thing, about the test NonStandardProteinCompoundTest that you commented about yesterday. I modified it slightly so that it behaves better and I have pull requested that to your branch. If you accept that, then the commit will be added to this pull request too.