Fix async.d.ts each* signatures

Sub-tasks:

1. Add generic ErrorCallback type
2. Rename AsyncIterator -> AsyncResultIterator
3. Add AsyncIterator as resultless iterator type
4. Change each, eachSeries, and eachLimit to use AsyncIterator, since the iterator callback returns nothing but an optional error (I tested this and no, they do not behave like map/mapSeries/mapLimit, even if you call them like that, which is what Ruby's Array does, e.g., `results = [1, 2, 3].each { |x| return x * 2 }`)
5. Rename AsyncMultipleResultsCallback -> AsyncResultsCallback
6. Rename AsyncSingleResultCallback -> AsyncResultCallback

5 and 6 are not bugfixes, as is 4, but they save space (and caolan's own async documentation doesn't suggest one wording over the other).