Implement an authentication interface.

This pull request adds support for authentication providers in the CFSSL infrastructure.

It is usually desired to require authentication from clients requesting certificates or signatures, so that the CA doesn't just sign arbitrary requests. In practice, the only functionality that needs to be authenticated is signing.

This functionality is currently intended for use in custom front-ends using the CFSSL toolkit. Authentication in the default CFSSL frontend is **not** provided at this time.