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