Replace existing gob-based merge impl with proto-based impl.

Merging now takes fully in C/C++ land with no callback to Go. Mildly
less flexible, but the the proto encoding is much more compact than the
gob encoding.
Hmm, actually we won't be able to call reportGCError here for certain, as you can only call exported Go functions from the same package. Yeah, controlling the C interface would make this a lot simpler.

In any case, add a TODO.