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.