Implement clone and checkout operations

Hi there,

as promised here are the clone and checkout operations for Rugged. Have fun! :-)

Note: libgit2 has a kinda confusing API. If you wonder why your cloned repository has no files in it, try doing the clone with `strategy: [:default, :create_missing]`. Also, when checking out stuff in an existing repository, you may want to use even more aggressive values for `strategy` so you really check out everything to be found in your target commit. Furthermore, doing a checkout operation will not automatically update the `HEAD` pointer. (All this is by (libgit2's) design)

Note2: This includes pull request #106.

Marvin