review and recode
diff也支持大于2GB的数据(理论上支持<2^63的数据)；
兼容性：如果old和new的数据都小于2GB,那么新diff代码生成的diff数据兼容于以前的老的patch代码!