Use Fast Enumeration where possible

(Spun out of #483)

Language Feature  | Xcode  | OS X | iOS
------------- | ------------- | ------------- | ------------- 
for-in / `NSFastEnumeration` | :question:  | 10.5+ | 2.0+
`-enumerateObjectsUsingBlock:` | :question:  | 10.6+ | 4.0+

See the [ Objective-C 2.0 Programming Language: Fast Enumeration](https://web.archive.org/web/20081219211233/http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Articles/chapter_8_section_2.html) (archive.org link) and [Programming with Objective-C: Blocks Can Simplify Enumeration](https://developer.apple.com/library/mac/documentation/cocoa/conceptual/ProgrammingWithObjectiveC/WorkingwithBlocks/WorkingwithBlocks.html#//apple_ref/doc/uid/TP40011210-CH8-SW5) pages for more detail.

Bonus commit 344b8b8, also replaces a while loop manually messaging an `NSArray`'s objects, with a single `-[NSArray makeObjectsPerformSelector:]`.
In these cases, I'm of the opinion that simpler is better. Keep in mind that there will be people reading this code that aren't familiar with obj-c, especially one of its deepest, darkest, most confusing aspects, which are `__block` variables. As there is no performance or functional gain in this change, I would suggest sticking to a regular for loop, which all readers will understand.