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 
Thanks Paul! The more I think about it the more I agree with you. We should raise exceptions as error handling is really important - do you think we should have `#get!` (raises exception) and `#get` (not sure)?

I will probably make the YAML-translation optional.