Adapted caching to work using Last-Modified header
Categories HTTP caching now uses ETag
Added cache headers to HTTP respons (issue #12 )

Entity tag (ETag) headers are now added for the following resources:
/additives, /additives/{code}, /categories/{code}. The ETag unique-id
value is calculated using the 'last_update' SQL schema property for each
item selected. Results will be cached in Redis and the ETag unique-id will
be recalculated on every request. The server will return (304) Not
Modified for matching ETag ids.

This is not a full fix for the issue because results are still fetched and
sent to the user agent. A proper fix would be to directly compare the ETag
ids without actually making a Redis data fetch request!
Added 'SKIP_AUTH' config parameter

If this parameter is set to 'true', the server will not validate the
X-Authorization header sent by user agents.
Fixed Slim Stop Exception issue (issue #12)

As soon as the Slim framework detects that user agent sent ETag matches
the server produced ETag set in the Model classes it halts the execution
with (304) Not Modified and throws a \Slim\Exception\Stop exception which
was being handled by the try-catch (Exception) in Model class methods.
This in turn was then rethrown as ModelException and that cause incorrect
HTTP (500) Internal Server Error to be thrown.

This whole scenario actually happens when there was NO cache at all on
server side (in Redis) but the user agent (browser) still sends the ETag
with the request.

Now fixed by catching the Stop exception in Model class methods and
rethrowing it to the caller.