New features: scratch codes and credential repositories.

Hi Warren,

I integrated the following features:
* Scratch codes generation.
* Definition of a pluggable credential repository interface for the library to store and load user credentials. This way, you can use the user name in the authorisation method call instead of passing the secret key on the wire.

Cheers,
-- Enrico