Use chef_keygen_cache for obtaining key pairs for users and clients

See opscode/chef_authn#13

This was updated a bit from that due to the recent changes to the users endpoints.

* Wire keygen cache into supervision tree

* Replace chef_wm_util:generate_keypair/2 with
  chef_wm_util:maybe_generate_key_pair/1 which is now used in
  chef_wm_named_client.

* Catch keygen_timeout in clients endpoints. Return 503 for this case
  with log message set to 'keygen_timeout'

* Remove dependency on chef_certgen

@seth  @sdelano @marcparadise @doubt72
Let's match this in the function head.