641 git mv handling

This branch is quite huge. The main changes are: 
* Update rugged to a state on their develop branch
* Add `basepath` and `file_extension` to `ontology_version`
  * Leave `basepath` and `file_extension` in `ontology` because there are cases when we don't have any versions in an `ontology`, but need the `path`. In the future, this will be removed.
  * Replace method `ontology.find_by_file` by `ontology.find_with_path`
  * Add method `ontology.find_with_basepath`
  * Those `ontology.find_with_*path` methods search for the path at the current version of an ontology, if there are any versions. Otherwise, the path of the ontology itself will be taken into account. It is crucial that `ontology.ontology_version_id` is always up to date.
* Diffs **and deltas** are computed in a lazy way in `GitRepository::GetDiff::FileChange` by rugged/libgit2.
  * A delta contains the information what kind of change has been made to a file (add, modify, delete, rename)
* Add max diff-size to config. Diffs larger than that are not shown (but a notice is shown).
  * Diffy is not used any more for computing diffs. The gem will be removed as soon as we decide how to display them. Maybe diffy will be handy for that.
* Add `GitRepository::History::Commit` class to represent commits in the history. Before, we used `Hash` for that task. Objects of this class are passed to the block given to `repository.commits`.
* Move some tests to rspec while re-adjusting them to the changes.

Fixes #641, #570, #537
`class_eval` with a string is just as `...`, as standard `eval` is.
Please use `define_method` instead. It could look like this:

```ruby
%w( added modified deleted renamed ).each do |status|
  define_method :"#{status}?" do
    @status == status
  end
end
```