First pass at switching from Mouse to Moo.

Requires a new module, App::Sqitch::Types, in which we define type constraints
using Type::Tiny. The basic test passes, so seems like a good checkpoint.
Get t/add.t passing on Moo.

While at it, remove boilerplate not needed by Moo (make_immutable, no Moo).
Also remove all Moose-style traits; just write explicit methods, instead.
Get plan and bundle tests passing.

Discoverd that Moo strongly prefers `exends` over `use parent`: otherwise it
can miss out on inherited attributes! So we replace all those.

Otherwise, mostly updating types and removing required attribute params where
attributes have default values.
Get the config command working.
Get the init and deploy commands working.

And start work on the engine.
Get remaining engine tests passing.

For some reason, Test::MockModule does not properly replace inherited
rw attributes in this test. Since they are rw, we can just
write the value instead of mocking. Still, kinda weird.
Get the engine subclasses working.
Get ItemFormatter working with Moo.
Get log command working with Moo.
Get the log and plan commands working with Moo.
Get rebase, revert, and rework working with Moo.
Get remaining commands working with Moo.
Remove `required` param when there are defaults.

Because if there is a default, it is not required. This due to the fact that
Moo defines "requried" as "must be passed to the constructor." We have a few
things that are required in that sense, but not so many.
Restore the IO::Pager constraint.
Build on 5.20, not 5.19.
No more Any::Moose.
Eliminate use of meta in plan, engine.

Instead, use a trigger to determine if a value has been set, use the Moo-provided
clear implementation (also in Moose), and fetch values explicitly rather than
via the MOP.
Drop use of the MOP in the init command.

Instead, use triggers to determine if Sqitch attributes were set, and fetch
values directly via accessor methods. This completely eliminates the use of
Moose and Class::MOP from Sqitch, so also call `no Moo::sification` to enforce
that from here on in. Some dependencies may still require Moose, but Sqitch
itself does not.
Drop use of Moose roles in X.

Role::HasMessage, Role::Identifiable::HasIdent, and
Role::Identifiable::HasTags were that only classes I was using that loaded
Moose. Since their only purpose here was to define a couple of attributes, we
can just define those attributes (except tags, which were never used anyway!),
instead, and drop the dependency on them. Their elimination reduces the
runtime of `t/sqitch` from around 38ms to 23ms. No part of Moose or Class::MOP
loads anymore. This is a significant win!
Load App::Sqitch::DateTime lazily.

Put off loading it until we absolutely need it. This is because it's pretty
expensive to load. No need to pay the price for that until we have to