add configurable bookshelf url attribute

This new attribute will default to the value of the Nginx url which is
built from the configured `api_fqdn` and Nginx ssl port.

Values set in the `/etc/chef-server/chef-server.rb` file always take
precedence so it is still possible to change the bookshelf vip to
something like "https://s3.amazonaws.com" if S3 is being used as the
backend cookbook store.

This fixes the following issues:

* [CHEF-3853] checksum URLs generated by POST /sandboxes do not respect
  configured load balancer port
load s3 config values from instance variables in ERB context

This matches the idioms used in the rest of the template. The recipe
passes all erchef related config into the template using
`node['chef_server']['erchef'].to_hash`.
build Erchef url off configured values for listen + port

The default attribute value for `node['chef_server']['erchef']['url']`
is out of date the instant a user configures alternate values for
`listen` or `port`. We'll remove this misleading attribute and just
compute a url when we need it using the following format:

  http://ERCHEF_LISTEN:ERCHEF_PORT

This fixes the following issue:

* [CHEF-3887] Cannot change port of erchef
build webui url off configured values for listen + port

The default attribute value for
`node['chef_server']['chef-server-webui']['url']` is out of date the
instant a user configures alternate values for `listen` or `port`. We'll
remove this misleading attribute and just compute a url when we need it
using the following format:

  http://WEBUI_LISTEN:WEBUI_PORT

`node['chef_server']['chef-server-webui']['listen']` has also been
updated to match the idioms of other components `listen` attribute.
build solr url off configured values for ip_address + port

The default attribute value for `node['chef_server']['chef-solr']['url']`
is out of date the instant a user configures alternate values for
`ip_address ` or `port`. We'll remove this misleading attribute and just
compute a url when we need it using the following format:

  http://SOLR_IP:SOLR_PORT
Resolves CHEF-3889

On machines with installed RAM > 64GB the postgresql shared_buffers configuration
would exceed shmmax.  This change places a maximum on shared_pages on machines where
Installed RAM / 4 execeds the size of shmmax of 14GB

This does not solve the case where you have a 32bit installation and more than 16GB
of RAM.