Odb: use a callback instead of a channel for ForEach

A channel provides no way to specify whether we stopped sending data
because of an error or because there is no more data.

Therefore, make Odb.ForEach() take a callback with which the user is free to
do whatever they need, letting us return en error.
Packbuilder: use a callback for ForEach instead of a channel

Channels provide no means to report an error. Closing a channel could
mean anything.

This is particularly important when dealing with IO, which we do quite
often in the pack builder. Use ForEach which returns an error instead.
Merge pull request #90 from libgit2/unchanify

Remove usage of channels for `ForEach`