[WIP] Iterables

- Adds a protocol for iterables, objects which can return an iterator.
- Adds iterators, blocks which return successive objects when called until exhausted, and then return `nil`.

As [described in #33](https://github.com/robrix/Reducers/pull/33#issuecomment-42776968), iterators are slightly disappointing—I had hoped to find an alternative to them for the implementation of multi-reducers (e.g. convolution), but unfortunately all such attempts were blind alleys: coroutines via `ucontext.h` are a no-go, `setjmp`/`longjmp` are beset with flaws (and anyways don’t work that way), and attempts to employ continuation-passing style and loops were intractable.

Iterators have been implemented as blocks taking no parameters and returning successive objects. An obvious alternative would be to simply employ `NSEnumerator`—most Cocoa collections provide enumerators already, implementing `NSEnumerator` over `NSFastEnumeration` can be done in the same manner as for iterators, and well-defined classes, unlike blocks, can easily be extended with other interfaces by subclassing and categories.

However, I intend this framework to be usable for tight loops; further, I hypothesize that calling a block is less destructive to the cache than is calling `-[NSEnumerator nextObject]`, especially when nested (as is necessary for convolution).

As a final caveat, the current implementations of these iterators are all left-associative, which may cause considerable difficulty when implementing iteration over right-associative data structures such as pairs. My hope is that [the discussion of the left-/right-associativity of various folds given here](http://okmij.org/ftp/Haskell/AlgorithmsH1.html#foldl) will result in enlightenment, but if so, it can probably wait for another pull request.