Changed from os:cmd to erlang:open_port so we can stream the result. Thi...

Changed from os:cmd to erlang:open_port so we can stream the result. This is one step for creating chunked reply. We also default the data to binary. 404 for missing files also added.
This should solve #8 and #9.

The suite that does exist are in a state of limbo. Didn't work properly before I started the branch.
If the only reason for this is to force a crash if the assertion fails then just match it instead.

false = filelib:is_dir(GitRepoDir).