Rewrite: Error out on redirect.
Fix tests for the error_page redirect.
Merge pull request #88 from duckduckgo/jag/redirect

Prevent Spice endpoints from redirecting.
Meta::Helper: be more calling-context aware.

Since we're offering `html_enc` as an alternative to `encode_entities`
it should behave in the same way when supplied a scalar and expecting
scalar output.  Mostly we're concerned about when they want scalar
output, so we'll just encode the first element off the supplied array if
that's how they've called us.

`uri_esc` is similarly updated to provide similar semantics.
Meta::Helper: concatenate instead of truncate for scalar.

Based on input from @mintsoft.

I can see how this makes more sense, so I'm on-board, too.
Merge pull request #91 from mwmiller/array_context

Meta::Helper: be more calling-context aware.
Rewrite: Ignore headers if we have proxy_cache_valid set.

We don't want response headers from the endpoints from interfering with proxy_cache_valid. Using proxy_ignore_headers will fix that.

From the proxy_cache_valid documentation:
> Parameters of caching can also be set directly in the response header. This has higher priority than setting of caching time using the directive. The “X-Accel-Expires” header field sets caching time of a response in seconds. The zero value disables caching for a response. If the value starts with the @ prefix, it sets an absolute time in seconds since Epoch, up to which the response may be cached. If the header does not include the “X-Accel-Expires” field, parameters of caching may be set in the header fields “Expires” or “Cache-Control”. If the header includes the “Set-Cookie” field, such a response will not be cached. Processing of one or more of these response header fields can be disabled using the proxy_ignore_headers directive.
Rewrite: Use has_proxy_cache_valid.
Rewrite: Add comments to the proxy_ignore_headers line.
Merge pull request #92 from duckduckgo/jag/ignore-headers

Rewrite: Ignore headers if we have proxy_cache_valid set.
Meta::ZeroClickInfo: simplify supported attributes check.

Streamline to a single code path for checking key/value pairs.

The hash key look up will be faster than checking against every
element in the array from the function call each time.

On the other hand, even though I got here somehow, I can't actually see
where it will get run.
Meta::ZeroClickInfo: change supported attributes init and check.

We don't really care too much about the values we are setting.  I
considered setting all the values to `undef` which saves some
infinitesimal amount of space, but also confuses people.

Instead, make it easy to add an attribute as if it were a simple list,
while getting the benefits of a fast `exists` check for set membership.

Thanks to @nilnilnil for the suggestion.
Add ZCI handling of structured answers.

Simply place a perl data structure in structured_answer and everything
will proceed apace.
ZeroClickInfo: add `caller` function.

This is equivalent to the `caller` attribute on ZeroClickInfo::Spice,
but can be added without requiring changes in another reppository.