Ignore duplicate OOB queries with an explicit warning, not a soft assertion.
Added changelog2html to automate most of the website news file generation.

Updated the RELEASE guide documentation to show more git steps.
parq_upload_insert_relative(): assert it cannot be called on a frozen entry.
parq_upload_remove(): also clear the PARQ_UL_QUEUE flag if no longer needed.

The flag is not removed when the connection is attempted to signal that the
QUEUE event is pending.  However, when the upload fails for whatever reason,
we must make sure that the flag is cleared as long as there is no more QUEUE
scheduled for that upload.
PARQ: added the upload PARQ ID in a few log messages.
parq_upload_remove(): no need to send a QUEUE to next upload if actively queued.
Back to an unstable state.
symbols_check_consistency(): replaced s_warning("BUG") with soft assertion.
Fallback to pre-computed symbol file when loaded symbols are garbage.

This usually happens when the executable has been stripped at install time
but the BFD library still manages to find a few symbols.
Make sure special folder paths are absolute.
Relax file_path_set() and open_read() a bit to gracefully handle relative paths.

Apparently bug #3534002 exhibits a problem with a pre-compiled binary on Debian
that does not supply absolute paths for some configuration files, which prevents
any startup.

Moreover, there is not enough data in the logs to identify who the culprit is,
so we are now loudly complaining when we're given a non-absolute path, without
necessarily crashing immediately.  We will crash later if the first path to
load a file from is not absolute, but otherwise we shall continue, with possibly
a degraded service (e.g. geo IP data missing, or no hostile support).
mingw_get_folder_basepath(): avoid "default" switch branch to have gcc warning.

Since gcc warns when switching on an enumeration with missing items, it is
best to avoid any default branch.

Also transformed the s_warning() into an s_carp() to see who is triggering
the warning in case it ever happens.
get_folder_basepath(): protect against unsuitable environment variables.
Recompute the amount of banned fds dynamically as config parameters change.

Users can update the "ban_ratio_fds" and "ban_max_fds" properties from the GUI
which influence the amount of maximum banning file descriptors we can use.

So each time one of these parameters changes, update the maximum and close
banned file descriptors we could then have in excess.
Introduced "ban categories" to allow several kind of IP address banning.

The legacy banning category is the "socket" one, but we're now provisionning
for the "OOB claim" category, to spot how often an OOB querying node fails to
claim the reported hits through UDP.

The API was slightly adapted to add the category parameter for calls where it
cannot be intuited by the semantics of the routine.
Catch unclaimed OOB hits and drop further OOB queries from  these hosts.

We're interested in completely unclaimed OOB hits, not partially unclaimed
hits.  Note that unclaiming does not mean the host is hostile, it could be
that it is actually incapable of receiving incoming UDP traffic.  But we don't
want to waste resources dealing with these "broken" hosts.
Count OOB queries that are ignored due to unclaimed OOB hits.
Detect series of unclaimed OOB hits from a host to ignore further queries.

Sometimes hosts do not claim OOB hits immediately.  When too many OOB queries
from a host go unclaimed, throttle further OOB queries from that host by not
processing them.

This strategy saves CPU resources (no need to process the queries), memory
(no need to store the pending hits) and bandwidth (no need to signal about
the pending hits).
Merging back various PARQ cleanup changes.
thread_is_stack_pointer(): relaxed assertions, downgrading them to tests.

Since the routine is used during crashes (deadlocks especially), we must
be robust when facing inconsistencies since the aim is to collect debugging
data, not safely continue execution.