Improvements to error handling

* Move factory for error classes into Error::createFromResponse (so Resource::convertError doesn't have to know about the internal structure of Error)

* Initialize Error::$codes only if necessary (the first time createFromResponse is called); don't initialize it just because the API is bootstrapped

* Improve Error::init: less code to do the same thing and remove hard-coded class name

* Error::createFromResponse returns an Error if it can't find a match (an improvement over returning an HTTPError)