Sending a nil propertyClass to classForPropertyName results in putting a nil object in a inspectionCache causing an app to terminate.
Rework caches and connections to improve performance. refs #1232

* Eliminate redundant use observers across `RKEntityByAttributeCache` instances. Instead, `RKInMemoryManagedObjectCache` does all observing.
* Adjust caches to work primarilly off of `NSSet` of managed objects instead of single instances
* Rework caches to perform asynchronous cache management activities instead of blocking. Add `completion` blocks for callbacks on async activities.
* Switch `RKInMemoryManagedObjectCache` to use its own private context instead of the persistent store context to avoid potential deadlocks during async cache management
* Rework `RKRelationshipConnectionOperation` to handle an array of `RKConnectionDescription` objects instead of a single one. This reduces the amount of operations minted in proportion to the number of connections used.