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.
Good point about the checksum. I'll add a TODO for now as I don't whether there is a handy crc32 implementation we can use. Worst case we can probably port the Go version back to C/C++.