Generate presigned URLs based upon Host: or preconfigured s3_external_url setting

 - generate_presigned_url and generate_presigned_urls now require an
   additional parameter for the request Host: value.
 - get_config() is now separated as get_internal_config() and
   get_external_config()

This patch extends the generate_presigned_url so that one can pass a
fallback vhost url.

If the s3_external_url is set to the atom 'host_header', then the
external url parameter will be used. Otherwise, s3_external_url is
used to generate the presigned url

This patch also seperates get_config() into an internal and external
flavor. The internal flavor is essentially the old get_config()
behavior. Erchef uses these credentials to talk with Bookshelf or to S3.
The external flavor is used to generate presigned URLs so that clients
can talk directly to Bookshelf or to S3. This allows for situations
where erchef or bookshelf is proxied or load-balanced.
Added testing for host_header and s3_external_url