Extended Porcelain.diff to produce diff for arbitrary refs (sha's) and create patches and added specs.