Fill out the additional full sync scenarios

* syncing changes in an existing file
* sync empty directories
* marking un-mergeble conflicts
Add rugged and use it from the integration tests
Bump to version to pre2
Extract notifier code into a class

This removes the notification code from the Runner, which make the Runner
a more cohesive object. This has 2 primary:
* making it easier to test the notifications in isolation
* making it possible to pass the notifier into another object

This should improve the CodeClimate score as well.
Add a repository class

This class should eventually encapsulate all the git related calls.
Clone, available_remotes, and available_branches has already been
migrated.
Extract the head commit oid code into Repository

The oid is now found through Rugged instead of the shell.
And the last synced commit variable has been re-named in the Runner to
be more descriptive.
Refactor change count to use Rugged

* added Gitdocs::Repository#author_count which will return a name of authors
  and counts of their commits
* refactor the runner to use this new method (changing the name of the main
  method to #latest_author_count
* also refactored the code around the change listing to be more DRY
Inline #dir_files into Server

The method is only ever called once and has nothing to with the reset
of the Runner code. Inline it out of Runner and into Server will make
the Runner a bit more cohesive.
Move the file related methods 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
* stop using the splat argument on Server.new and instead just pass the array
  of Repositories
Delegate #root from Runner to Repository
Remove the Runner#listener attribute reader

It is not used, so can be removed.
Refactor directory change into the #sh_string

Since the 'cd root' has been added to every command so far, I am
refactoring it into the #sh_string command itself.
Refactor search methods into Repository

They have been removed from the Manager and Runner.
Tests have been added for both search methods in the process.
Extract git fetch and merge into the Repository

Now unit testing the Repository#pull by itself.
And unit testing the re-written Runner#sync_changes.
Extract git push into the Repository

Now unit testing the Repository#pull by itself.
And unit testing the re-written Runner#sync_changes.
Refactor Repository::file_ methods to use rugged

Included adding more yardoc tags for the methods, and one more test
case.
DRY the Rugged::Walker calls and remote checking
Change the search function to use Grit

Catch all the appropriate exceptions to ensure proper results.
Merge pull request #73 from acant/feature/rugged

Convert to use rugged and Grit