Implement iterative Core Data model upgrades

Closes #2357 

ContextManager has been updated to use ALIterativeMigrator when the model in the persistent store doesn't match the current model version.  This allows us to create mapping models for a single version upgrade and devices installing app versions that skip upgrades will still get the mapping model applied.

Unit tested the migrations as well - I'm fairly certain this is a solid solution.