Fix error message in ty_firmware_load_ihex
Add fallback implementations of getdelim/getline
Missing compat.h include in htable.c
Remove rrestrict qualifiers in stpcpy

The restrict qualifier is used only there and its support by C++ compilers
is unclear, remove it for now.
cosmetic: White space changes in compat.c
Implement simple INI parser
Fix harmless warning in cli/monitor.c on -O2
Don't put include/ty in include path

Include statements in library code have to use ty/ path prefix.
Add compat strndup implementation
Add TY_INIT macro to define static constructors
Officially reject non-GCC-compatible compilers
Add platform-independent standard descriptors
Move device monitor private prototypes to device_priv.h
Optimize htable to store only head pointers in htable
Append same-hash values in htable instead of prepend

Current code does not care, but future project code needs this.
Don't crash when iterating zeroed htable or list

Fixes a bunch of error paths in *_new functions.
Enable -fms-extensions to simplify pseudo-inheritance

Tagged named struct and unions are quite useful for pseudo-OOP inC.

At least GCC, Clang and of course MSVC support it and it's quite useful,
and I don't care about strict conformance.

Of course, public headers must not expose any of it.
Add printf format check to compat asprintf
Replace a few single-value switches with ifs
Don't keep udev_enumerate around in device monitor

udev_enumerate is used only to scan devices at first. Also, use subsystem
filters for recognized types (reduces memory/time to scan).