AFJSONRequestOperation processes JSON before isFinished set

The issue here was the `AFJSONRequestOperation`'s `responseJSON` method computed its result lazily. Therefore, if called from multiple threads, things would blow up. The solution proposed in this PR is to process the JSON prior to marking the operation finished, on the thread on which the connection finishes. This means that callers of `responseJSON` are not burdened with processing the JSON, and that property can be a simply read-only property.

Long-term, we're going to need to replace our use of AFNetworking 1.0. We may do this next milestone as we move towards using background transfer for backup/sync.

PTAL @floatplane @DawnWright @charlesmchen 
The issue is that operation that formally depend on this AFJSONRequestOperation will execute as soon as it is marked finished. If the dependent operation accesses `responseJSON`, then it may not have been initialized yet since the `completionBlock` is executed after the operation is marked finished. (This is further compounded by the fact that `responseJSON` is called on yet another block on yet another queue.)

My approach was to calculate the `responseJSON` before marking the operation finished, which seems like the most reliable/sensible design to me. This required hooking into `AFURLConnectionOperation` which is actually handling the heavy lifting.