Add support for fully custom location configurations.

This adds a new location type that simply accepts a location_custom_cfg hash to supply directives.

I also moved the variable checks in location.pp above the template calls, this fixes user template errors that would have been caught by the config checks.

This fixes #82