Merge pull request #78 from acant/bug/extra_file_changes

Working on removing the extra file changes and extra notifications
Clean up behaviour on repositories with no commits

I added additional tests to better cover #push and #pull.
(Note: I suspect that more test would probably be appropriate for the other
methods. However, they should largely never be called on a repository with
commits so assertions maybe the appropriate way to document this.)

In order to clean up some exception throwing in Repository#push:
* avoid trying the push if there are not local commits
* I use #current_oid instead of @rugged.head.target directly. This
  returns a nil for an empty repository instead of throwing an exception.