Major cleanup: it works now:

The original structure was awkward. This is fixed and working with
the original tests.

There are now three decoupled parts:

* Dancer2::Plugin::Passphrase:

Provide the 'generate' keyword for generating passphrases.

* Dancer2::Plugin::Passphrase::Core:

The majority of the actual implementation.

When you call the 'generate' keyword it creates an object of
Dancer2::Plugin::Passphrase::Core. The original design would actually
create an object of the plugin itself, which is risky and confusing.

When you call methods, it's actually called on this object.

* Dancer2::Plugin::Passphrase::Hashed:

This is a data object representing the hashed passphrase.