Fix support for overloaded objects.

Git::Repository::Command->new would silently filter out all references from the command
arguments, catching things like Path::Class.  The filter looks like it was there to
catch extra Git::Repository objects on the command and ignore them.  I don't agree
with this feature, but its tested in t/20-simple.t and I've emulated it.

The new code removes the Git::Repository objects from the command list explicitly.

For rt.cpan.org 82373
simplify _extract_special_from_list to nothing
thoroughly cleanup @cmd

previously, the options fetched in @o actually stayed in @cmd

which means that System::Command had to process them again,
and merge the original batch of options with the ones processed
by Git::Repository::Command

This is mostly an optimisation patch.
Git::Repository::Command now dies if given more than one Git::Repository object

As noted by Schwern in https://rt.cpan.org/Ticket/Display.html?id=82373

    The feature tested in t/20-simple.t which ignores extra
    Git::Repository objects seems like a bad idea. Nothing but that
    test triggered that behavior. Should it not be an error?

If Git::Repository::Command receives more than one Git::Repository object,
it needs to pick one to set the context of the command. Until now, the code
picked the first one, but if the goal was to allow some sort of overriding
of the defaults, picking the last would make more sense.

In the end, this should probably be considered an error.

So Git::Repository::Command->new() now dies if given more than one
Git::Repository object.
cleanup the test by removing useless code and adding test messages
"git init $dir" is only valid from git version 1.6.5 and later
Git::Repository->new now dies if given more than one option hash
update MANIFEST