Parallelize key creation in chef_keygen_cache

This patch introduces a new app config:

     `{chef_authn, keygen_cache_workers, WorkerCount}`

that controls the number of concurrent keygen workers that will be
used to fill the cache to its max level. The default worker count is
set to half of the number of logical processors available on the
system.

The value returned when a worker times out changed from 'timeout' to
'keygen_timeout' to distinguish it from gen_server system timeouts.

keygen constants moved to chef_keygen.hrl
Update generated edoc
Ensure consistent timeout behavior for chef_keygen_cache:get_key_pair

In the event that the chef_keygen_cache gen_server gets overloaded, we
ensure get_key_pair calls timeout as expected.

Removed case clause for keygen_timeout since the server only returns
values from its cache and never caches timeout values.
Remove inline key generation from chef_keygen_cache

Inline key generation attempts to avoid returning an error to
requesting consumers but without limiting the number of in-flight key
generation requests. A stampede situation could starve the entire
system.

Removing inline key generation means that consumers will immediately
receive an error if the key cache is empty. But key generation will
always be bounded and some requests will be satisfied.
Delay start until keygen_start_size keys are available

New app config `{chef_authn, keygen_start_size, Int}` can be used to
control how many keys should be available when the cache is
initialized. The cache's startup will block until the specified number
of keys are created.

Also included is a bit of reorganization of the tests with a new make
target `make slow_tests`. To get test coverage for timeout and worker
crash cases and observe replenishment of cache takes a bit of time and
relies on speed of system. These tests may need tuning to pass on
other hardware.