Extract Repository code into private methods

These routines are only called once each, but they are cohesive enough
that they cam be their own methods.

* mark_empty_directories
* mark_conflicts
* total_size

mark_empty_directories and total_size could probably be consider for
extraction a more general FileUtils types class as well.
Add rubocop dependency

I want to start writing a rubocop configuration, so it makes sense to
add rubocop as a development dependency.
De-duplicate notification in the Manager

The code was originally duplicated from the Repository before
notification was extract into its own class. Changed this and added a
error short-cut method to avoid explicitly instantiating the notifier.
Extract update and delete from the Server

I have extracted the core of these calls, which is manipulating the
configuration out into the Configuration class. The methods are:
* remove_by_id
* update_all

I have also added delegates to the Manager class, so that the Server
does not need to know that the config object is used. This eliminates a
LawOfDemeter violation.
Add delegates to Configuration and Manager

In order to reduce the LawOfDemeter violations and made the code easier
to work with I have added addional delegate methods to Configuration
and Manager.

This eliminates a dependency from Server to Configuration and some views.
As well as simplifying code in Cli and Manager by reducing method chains.
Move Server start and wait into the Server

Previously this code was located in the Manager.
Code style updates in Server
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 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.