Use vhost_location_directory if its parameters are defined

Since root can be defined at vhost level there isn't a need to define (www_)root in every location.

Here I've added every parameter that has a default of undef and is used by vhost_location_directory.erb to the condition that uses the vhost_location_directory.erb file.

As location_custom_cfg and location are only parameters used by the vhost_location_empty it makes sense to use vhost_location_directory.erb whenever possible.

No compatibility issues are raised as all of the tested vhost_location_directory variables aren't used in the vhost_location_empty.erb template.
Add context to the error message to make it useful
resource::vhost to set www_root at top level

Added the www_root parameter to a resource::vhost to the user looks like it
would add "root $www_root" to the top level however it just inserts it into
the 'location / { root $www_root; }'. Here we do what the user could expect
resulting in an equilivant configuration for existing users and making it
possible for subsequent resource::location resources not to specify www_root.

This avoids the first pitfall listed here http://wiki.nginx.org/Pitfalls.
Allow arrays to be specified as values in location_cfg_* parameters
Merge branch 'array'
Merge branch 'vhost_root'
Add array inteperlation in vhost vhost_cfg* variables
Add proxy_set_header to vhost_ssl_header to be the same as vhost_header
ipv6 port to ssl_port with ssl and spdy (if enabled) options. Closes gh-198
Merge branch 'vhost_port_normalisation'
Merge branch 'array'
Merge branch 'vhost_ssl_normalisation'