* no more hash values - only lists and list of key-value pairs
* "master" config:
the config loaded on startup can use all features,
configs loaded later (vhost on demand from sql...) can't use
include* and cannot modify global vars.
* scoped variables
- add a global var store in the server struct
- global vars can be set with "global foo = bar"
- if a variable already exists in a scope it will be modified on a
write, otherwise a new local variable is created
- global vars won't be modified if not in "master" mode
- vars can be made explicitly local with "local foo = bar"; create a
local copy with "local foo = foo"
- globals vars are available in live config loads for reading
- each file and action block {...} creates a new scope; if/else branches do
NOT create a new scope
* to append a value to a list use "l + [v]" (not "l + v" anymore);
lists are concatenated with "+"
* [...] always marks a list
* (...) is a list if it contains a "," or "=>", otherwise it justs
groups an expression
* a list can either contain key-value pairs or other values. mixing is
not allowed
This fixes 2 things:
* won't need global server lock for logging in worker context
* order of log entries; worker context log gets committed to
global list in the event loop