Defer getting file contents until needed

This will avoid calling the API to get file contents from GitHub as the
`CommitFile` object is constructed. Also, allows us to avoid getting contents if
file is removed.
Can we just make the request in the `CommitFile` class instead of passing the proc around? If the code is being executed in `CommitFile` it feels like that's where the method(s) belong. Let me know, I think I might be missing something.