Fixing compare operators of Git::Reference

The first implementation of object comparison of two `Git::Reference` objects is wrong and error prone (sorry for that). Especially as we are working with smart pointers, we need to worry about when an object is marked equal. This PR adds a simple fix for comparing references of Git::Reference objects (sometimes I hate language :smile:). Question here: Should we compare the `d` member here?

To compare the destination (symbol or OID) of references, the new method `compare` should be used. This wraps exactly `git_reference_cmp` from lg2.

Note: This enforces a correction to the behaviour of the MGV module `RefsViews`, currently relying on the == operator.