`ini_to_zig_zag` and its companion(s) are identical between this and the original.  In fact there's probably a ton of identical code except for use of `transfer_foo` and `cdata`.

Do we plan to ultimately submit a patch that replaces compact_protocol wholesale, or one that offers this alternate implementation side by side?  If the former, I don't care about the duplication; if the later, we should find a way to not have so much nearly identical logic expressed in two places or it's a maintenance nightmare having to make equivalent changes in two places down the line when fixing bugs or adding function.