Diff enhancements

Here are some more enhancements for generating diffs. I think I've captured the most useful (maybe usable) options that one may need to generate patches similar to ```git diff```.

Please let me know what you think. There is a compatibility break in the way the ```tree``` object is passed. Previously it was an argument to ```diff```, now it it is captured in the HV under ```tree```. Still need to write some documentation.