load the DateTime module where needed
properly handle commits with more than one parent (merge commits)

- fixed a bug when reading content with more than one header line
  with the same key
- put each parent on its own line when generating the content
add tests for a merge commit

created a new pack including this commit
and removed the existing one
check it's not possible to put an object in an existing pack
check that it's not possible to delete from a pack, and that a pack is readonly anyway
write down the Glow::Repository::Git:: object classes, instead of being fancy with meta

The following classes have been implemented in their own file,
instead of being generated when Glow::Repository::Git is loaded:
- Glow::Repository::Git::Blob
- Glow::Repository::Git::Tree
- Glow::Repository::Git::Commit
- Glow::Repository::Git::Tag
- Glow::Repository::Git::Storage::Loose

The intermediate Object level has been removed.

This change should in fact make it easier to differentiate
generic behaviour from Git-specific behaviour.
simplify the use and definition of kind2class

kind2class is now a method required by Glow::Role::Storage.

Glow::Repository::Git::Storage is a *role* (abstract class, really) that
provides the kind2class method for the actual storage implementations
for Glow::Repository::Git.

Because kind2class is required in classes doing Glow::Role::Storage,
Glow::Store defines a stub one (that is never used, since Glow::Store
actually delegates to actual Storage classes).
remove the mostly useless Glow::Role::Blob role
Glow::Role::HashFromContent is a role that reads the generic header / body format of content

With support for the following types of headers:
- single line, single value
- multiple lines, multiple values (parent)
- multiple lines, single value (gpgsig, mergetag)
should only take encoding into account in cases where encoding can be provided

in git, commits have an encoding field, but tags do not (at this time)
rewrite Glow::Repository::Git::Tag using Glow::Role::HashFromContent
fix some test messages
use modules when they are referenced
rewrite Glow::Repository::Git::Commit using Glow::Role::HashFromContent
keep code in the same order in Glow::Repository::Git::Tag and Glow::Repository::Git::Commit
test individual attributes for Glow::Repository::Git::Tag and Glow::Repository::Git::Commit