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.
Agreed that we shouldn't silently error. I saw compaction.cc and I'm using the same technique for MergeOne (if you're talking about the error_msg parameter). But we don't control the C interface here. This is another reason for not using the rocksdb C interface.