!bug: non-absolute path is considered as *asbolute*
core.init_listserver: add code comments
internal.cmdarg_config: fix :listserver-root

* Old: join ${lists-root} := ${listserver-data} + ${lists-root}
* New: ${lists-root} is kept it is absolute. Otherwise it will be
  be prefixed by ${listserver-data}. If this variable is not set,
  it will be ${listserver-data}/lists.

Please note this create a VAR_SITE ${lists-root}. Strategy:

* Invoke (init_listserver) to set some glob. variables
* If "-c" option is set, (cmdarg_config) is called, to set the
  VAR_SITE variables. The most important variable is ${lists-root}.
* Main program re-reads configuration from GLOBAL_CFG_FILE, to
  override any setting from modules (!?), then set a VAR_GLOBAL
  value for ${lists-root}.

Basically, we have two places to initialize ${lists-root}. Will join.
Almost the same reason as the previous commit

This is for VAR_GLOBAL "lists-root". The code is not persistent.
For VAR_SITE, the author tries to check if there is a prefix.
For VAR_GLOBAL, the check is not apply. FIXME: Why?
load_all_modules: inform the path where modules live

FIXME: (log_printf) does not really work if the configuration is not correct
lists.c(read_conf): Fix ${lists-root} after reading file

Instead of providing "hacks" in different places, we move the code that
fixes the ${lists-root} variable to (read_conf): Every time the configuration
is read, the variable is fixed. We should move other fixes to this function
Move some variables fixes to (read_conf)
read_conf: print msg. if conf.file not found
Remove trailing spaces
log_printf: print to :stderr if :logfile not found

If :logfile not found, the function will print its message to stderr,
using the function :debug_print (requires -DDEBUGCONSOLE). In case of
using :stderr, :level has no meaning in the early steps of our program,
(bc. we have no way to :debug level). The simplest choice is to print
out all messages for debugging
Accept only one configuration file

* GLOBAL_CFG_FILE: now uses to provide default/fallback conf. file
* Missing conf. file will terminate the program
* (init_listserver) accepts one argument to specify the path to
  configuration file. Need this bc. at the time the method is called,
  (set_var) and (get_string) are not valid bc. some variables are not
  initialized and they may make program crashed.
GLOBAL_CFG_FILE now is ../etc/ecartis.cfg

This is still not good because we often use PREFIX to get the file.
However, it is much better than using "ecartis.cfg", because that
requires binary file and configuration file must be in the same dir.
(debug_printf) prints also the (pid) information
Remove debug code
debug_printf: swap the position of :time and :pid
debug_printf: remove extra space in the output
Close :logfile before a :return
core.init_listserver: fix prototype
get_number accepts the 2nd parameter (default value)

The primary purpose is to get some default value if there is
something wrong with (get_number). In some cases, the default
value 0 (as in the old behavior) may not be useful. For example,
when get SMTP port number, the default value would be 25.

We also provide some random default values for variables.

Please note that the (log_printf) now uses leve 3 as default.
This would help in the early steps of the program when the
configuration file is not ready, and log level is not valid.
using level 3 will hide a lot of messages, but not all of thems
which are useful for debug (file error, configuration error,...)
!bug: out of range when getting arguments