Duplicate Gitpan::Types for Moo.

First step to converting to Moo is to convert the type system into Moo.
This is done as a copy so we can convert from Mouse one at a time, else
the Mouse classes using Gitpan::Types would all break.  Once the
conversion is complete, Gitpan::MooTypes will overwrite Gitpan::Types.

While I'm at it, I've made some of the type names better.  Less concern
about the global nature of Moose types.

Changes to InstanceOf["Class::Name"] is currently indifferently remembered
by Types::Standard, so it might forget adding a coercion.  This is why
Gitpan::MooTypes declares its own Path and URI types rather than adding
coercion to the existing types.  See [rt.cpan.org #97516].
Convert Gitpan::Git and Gitpan::CanBackoff to Moo.

Gitpan::Git consumes Gitpan::CanBackoff so CanBackoff has to be converted.

Then Gitpan::Git can consume Gitpan::HasConfig.
Have Gitpan::Git use Gitpan::Config.

Necessitated allowing the config method provided by HasConfig as a
class method because Gitpan::Git needs config information to
create itself.

This means there's no way to change the config once it's been
used, we'll blow up that bridge when we come to it.
Convert Git::Config to Moo.
Have Gitpan::MooTypes export types by default.

More convenient this way, that's how it's going to be used most.
Don't need to load Gitpan::Config.
Convert Gitpan::ConfigFile to Moo.
Convert Gitpan::Dist to Moo.
Left a debugging print in.
Put a thin wrapper over Moo.

This makes has + Type::Tiny + coercion more convenient to deal with.
Now we don't have to duplicate the type to turn on coercion.

Coercion is also on by default if available.
Change Moo classes to Gitpan::OO
Convert Gitpan::Release and remaining roles to Gitpan::OO.
Convert Gitpan::Repo to Gitpan::OO
Correct the Gitpan::Role::HasConfig docs after the OO change.
Replace Gitpan::Types with Gitpan::MooTypes.

Bye Mouse.
Merge branch 'refactor/moo' into rewrite

Replace Mouse with Moo so we have one OO system