improved history

this is the most important change: there are now several format options for diffs and you can use different formats for different sets by overwriting the method diff_args