This adds global exclusive advisory file locks on a per-thread basis.
Only exclusive locking for a whole file is supported to setup headers etc.
Finer grained locking will be handled somewhere else.
lumiera_error_set() now takes an optional extra string which can be used
to pass context relevant data along. This string gets copied into the
error state so one can easily create it by the tmpbuf_snprintf() facility.
Also a lot of places which define errors get fixed according to this.
* add 'backend' for backend global initialization/destruction
and common functions.
* WIP: 'file' acts as interface to named files, provides posix
filehandles with and acquire/release function pair.
* 'filehandle' manages posix filehandles internally, refcounted.
* WIP: 'filehandlecache' keeps unused filehandles in a MRU cache
* WIP: test for filehandle management
* improved filedescriptor test