Refactor the fetched results controller and collection interaction.

I made the following changes:

- I thing that performing two sets of batch updates in `controllerDidChangeContent:` is dangerous. At the end of the first update, the collection view could ask the data source for data that is now outdated which will cause a crash. I folded both update blocks into a single pass. #24
- I don't like the idea of using the mutable collections directly inside the change block since no garuntee is made as to when it will run. So, I copy the pending changes into stack variables and immeditely reset the mutable collections. This prevents the collections from being mutated in multiple quick passes through the fetched results controller methods. #24
- Added ability to disable change animations. #25
- Begin translating index paths from fetched index paths into view index paths. #24.