Add keygen cache to replace cert service.

This is a rebase and further work on 
https://github.com/opscode/chef_authn/pull/13

The openssl command can now be selected as a config parameter.
We now check the exit status of the keygen command.
We throttle the rate of generation if we start getting timeouts.

The original PR:

chef_keygen_cache provides an in-vm cache of key pairs to avoid
in-request latency of on-demand key generation. The cache falls back
to in-line generation if the cache is exhausted, but does the
generation in the calling process so that in-line generation is not
serialized through the server.

RSA key pair generation is achieved by shelling out to openssl and
requires that openssl be present on the PATH.

@seth  @sdelano @marcparadise @doubt72 
is replying keygen_timeout when no key is available intentional?