Proper option and revision parsing instead of passing directly to git diff

This makes expanding a single commit into a range of one an easy, robust
feature.