Major improvement to GitAdapter.
Major improvement to GitAdapter.

Previously, saving state was just comitting everything under Dir["**/*"], but
that wasn't great. For one, that doesn't work with deletions (they won't show up
in Dir["**/*"] since they're not in the filesystem anymore), and secondly that
is incredibly slow since it requires looking through each file, regardless of
whether that file has been changed or not.

Another issue is that previous implementations did not look at the modes of
files when comitting them -- they were unconditionally set to some value. Now,
the actual mode of a file is what is stuck into the git repository. The reason
for this is because now the files checked in / out come from
Rugged::Repository#diff_workdir, which takes file modes into consideration.

Hopefully this works!

kmc/kmc,kmc/kmc,kmc/kmc