Refactor password matching logic
Refactor password matching logic

Simplifies `password_valid?` by extracting a private method,
`encryptor_matches?`.

The fact that one method, `encrypt_arguments`, prepares an array
of arguments to be splatted into another method, `encryptor.matches?`
remains a design issue, IMO.

Maybe there should be an object that acts as an intermediary between
the `Password` module and the various crypto providers.

Finally, the feature which supports an easy transition from
`restful_authentication` indroduces an immense amount of complexity.

> Simplicity is a prerequisite for reliability.
> -Dijkstra

This is security-related code. It needs to be reliable. We may want
to consider removing some features here.

binarylogic/authlogic