Return {:ok, response} or {:error, error} on requests

For each request, a request! was added to reflect previous behaviour.

Also HTTPoison.HTTPError became HTTPoison.Error