add keepalives to cookbook synchronizer

adds a basic_client_cache that 'users' can create and pass into
Chef::HTTP/REST in order to cache their clients based on hostname +
port + options
code duplication here with Chef::HTTP i could clean up