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:]`.
The old way was kinda weird, actually, and I wonder why. I guess the mWindow elements were being removed from the array upon `close`?  If so, only thing I'd check is that this doesn't crash because mWindows is being modified during iteration.