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
i pushed this way up the stack initially before i had the cache object, i should probably push it back down now