Refactor to allow easier overriding.

Refactor the handling of connection:didFailWithError: and
connectionDidFinishLoading: so that it is easier for subclasses of
MKNetworkOperation to override aspects of that handling.

This takes the piece for tidying up internal state into
updateStateForFinishedConnection (cleaning up some duplicated code on the
way) and puts the actual response interpretation into
sendNotificationsForFinishedConnection.

This also adds setResponseData and setResponseJSON so that the subclass
can change the responseData, and setResponseStatusCode:withHeaderFields:
so that it can change the response instance.  These are useful for
injecting mock responses or faults for testing.