Add a guard around checking if response is Hashie

We should only be returning the hash error if the response given is a Hashie::Rash. Otherwise it's probably a non-JSON response and will just be a string
Add a 401 guard to asking someone to check creds

No point asking a user to check credentials if it gives a 500 error
Only parse JSON if content-type is json

Use regex to check content type given is json
Ensure webmock gives correct content-type

Otherwise Faraday won't parse mocks with json middleware
Ensure html is given as html content-type
Fix string match for HTML errors