Batched import of large arrays of data, synchronous background importing

High-level changes:

- Importing arrays of objects is now done in autoreleased batches, to ease memory usage
- Generating existing object lookup dictionaries is now done with a limited fetch, returning only object ID and value for model ID key
   - Faster and less memory/cache usage than full object fetch
- Background importing is done "synchronously" by default - on a private dispatch queue
   - Importing using private queue MOCs in parallel can lead to duplicate objects/relationships in certain cases
- Can still import truly asynchronously in background by providing key to options dict.

@nbonatsakis @joshleibsly 
Take note of the last few bullet points. This may affect a project you are both currently working on. Please come find me if you have questions.