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.