Move the file related method into Repository

These methods are a better match to the Repository than the runner
because they are working with the files in the repository.

Additionally:
* tests were added for all of the file methods
* made Repository#root public
* the Server is updated to call file and root methods on the Repository
* and the Runner objects are no longer passed to the Server because
  they are no longer needed
Delegate #root from Runner to Repository
Remove the Runner#listener attribute reader

It is not used, so can be removed.