Ducks.

<quack>
Failed dists weren't failing properly.

I was recording distnames in $app->failed, but looking up module names.
Now, ->failed is always module names (or at least, whatever was passed
to us as a module name), and ->tried is always distnames.
Don't take name/version from the Dist.

Dists still have names, for convenience (for messages, and so we've got
something to call the wrkdir), but that name is no longer used to name
the created package. Instead, Build now has ->name and ->version, which
get the name and version out of META.yml.

Some of the internal methods (pkg_for_dist and install_my_pkgs) are now
a bit untidy. I think, probably, I need a Pkg class, to hold name/
version/origin information, to replace my old use of Dist for that
purpose.
Give Exception's a stringify method.

Otherwise if one gets as far as toplevel the error message is useless.
Split real CPAN dists into a subclass.
Support building from Git repos.

I've changed Dist->name to just be the basename of the dist's tarball.
It's only used for messages and for wrkdir, so all that matters is that
it's reasonably unique.
Adjust the tried/failed logic, again.

I think I'm missing something, here. This shouldn't be that complicated.
Rollback register_build if it fails.

Otherwise we get stuck in an open txn. Really I need a txn_do method for
this.
*O*K, let's try this again...

Keep separate lists of modules tried and dists tried. If we've
previously tried either a module or a dist, then there's no point trying
it again. If we get a Needed exn with a module in that's already been
tried, then this is either a dep on a module that's already failed or a
circular dep; in either case, this build fails.

Keep a list of failed dists just to print at the end.
Not all dists have META.yml.

We need Build->name before we've run configure, but only for the
messages. If there's no metadata just use the dist name.
Declare deps.
Meta.
Update the CPAN::Meta::Requirements dep.

And rev $VERSION.
Meta.