Make Commit and Diff objects wrap Rugged objects

Allow a Gitlab::Git::Commit or a Gitlab::Git::Diff object to be created
from either a Rugged or a Grit object.
Implement the log() method with Rugged

Use Rugged's Walker API to implement the log() method instead of using
Grit.