Only require correct formatting on staged chunks.

This uses "git show :file-name" to show the file contents as it is
staged to check formatting. Previously it would take the file name and
check the file as it exists on disk, which doesn't always reflect a
developer's intentions.

This commit means a developer can now commit correctly-formatted chunks
of a file while leaving other chunks of the same file unformatted.