fix(ngResource): make success and error callbacks behave more expectedly

Call the success and error callbacks with the values returned by the
response and responseError interceptors, respectively. If the
interceptor returns a promise, call the appropriate callback with the
resolution or rejection value of that promise. Previously, the error
callback was called with the server response before calling the
interceptor, regardless of whether the error interceptor handled the
error, and regardless of what it returned. Also, if the server response
was successful, but the response interceptor returned a rejection, no
callback was called.