Feature/net http errors

* Implements an errors hierarchy for non successful http responses
* Net Http requests raise the appropriate error from the errors hierarchy if the response is one that is not classed as successful 

* related to #106 
How did we handle all other errors but Unauthorized before your patch? We only raised an exception for Unauthorized?