Remove parent and file_path variables from render

These variables are not used in any of the templates and can be
removed.
Move reading commit message file into Repository

This eliminates the need to pass an argument to #commit and seems more
cohesive given that this is directly related to creating a commit.
It also opens up the possibility for moving the writing of the commit
message file into the Repository in the future.
Extract writing the commit message from Server

...and put it into the Repository.
* #file_revert handles writing its commit message and to account for a
  nil revision.
* #file_write will write out data to a file, ensure that the
  necessary path exists and write the commit message

Additionally, I extracted getting the absolute path for a file in the
repository into a private method.
Refactor getting content paths

Combined the revision path, regular file path, and directory listing
paths into a single method Repository#file_path_for.

The Server has been updated, and still makes multiples calls but
eventually it should be possible to combine these calls into a single
place for doing the GET on a file path, with or without revision.
Extract file manipulation code into Repository::Path

Extract code out of the Server, which is used for manipulating files and
directories in the repository.

Also move the Repository::file_* methods from the Repository into
Repository::Path. These methods are not directly related to Repository
manipulation but instead to a particular path in that Repository, so
fit better into Repository::Path.

A small amount git specific code remained in Repository in order to support the
Path methods:
* write_commit_message
* commits_for
* last_commit_for
* blob_at

This has simplified the testing.
The Server has been updated to use Path and all the new methods.