CHEF-4086: Use "Host:" header value to construct returned URLs

Erchef needs to send back URLs for resources such as cookbook versions,
clients, etc. However, if it sits behind a firewall or a proxy, then it
might not have access to the name the client used to access the server.

This patch creates the base url by using the value set by the client in
the "Hosts:" header. If the value is missing, then it will fallback on
using the webmachine-provided host name.

There are some security concerns with this approach. One way to mitigate
this is by checking the value against a configurable whitelist.
Configurable base_resource_url and pass to S3 presigned url generation

 - Make vhost or fqdn url generation configurable
 - Pass on vhost/fqdn when generating S3 presigned url for sandbox,
   depsolver, and cookbook_version

If base_resource_url is set to the atom, 'host_header' (default) then
the URL will use the Host: header value.

Otherwise, it will use the url set for base_resource_url

Further, pass this value to the S3 presigned URL generation.
Added tests for chef_wm_util:base_uri()
Merge branch 'hh/CHEF-4086/vhost-base-uri'