~siborgium/Regex

Escape sequences parsing
Classes parsing stub
Replace the majority of asserts with brand new CHECK_ macro & error codes
ast_normalize uses memory manager to free unused AST nodes

Actual ast_free is not ready yet, but the code using it is.
Remove dependency on Sregex

Since the new parser was written, the only real dependency we had on Sregex
were enumeration elements SRE_REGEX_TYPE_* from sregex/sregex.h
The enumeration is not designed for our AST type and contains unnecessary
elements that tend to confuse the programmer.

This patch introduces AST_TYPE_* constants, replaces SRE_REGEX_TYPE_*
with their corresponding equivalents, removes #include <sregex/sregex.h>
and removes Sregex dependency from CMakeLists.txt
set_add_piece uses mem_mgr_alloc instead of malloc
Write pseudoassembly generation for sets
Explicitly set C++20 for tests.cpp in CMake, replace deprecated INSTANTIATE_TEST_SUITE_P with INSTANTIATE_TEST_SUITE_P
Allow to tune memory manager scale coefficient

Pool block size is calculated as (pool item size) x (scale coefficient).
Scale coefficient was hard-coded to 1024.
This patch moves scale coefficient to memory manager config, allowing it
to be tweaked easily. It also provides a new "default" value visible to
the user:

    MEM_MGR_DEFAULT_SCALE = 128
Allow user to define memory manager with their own malloc/free pair

Add mem_mgr_config struct & use it
Add utils library allowing convenient creation of mem_mgr_config

This change is absolutely required to allow running memory manager in resource
constrained environments, where there may be no malloc/free.
Remove long-unused ast_traverse.{h,c}
Implement set_is_equivalent to allow merging equivalent sets
Remove long-deprecated ast_vec from ast
Add set deduplication

Only add set pieces which are unique to the set.

    [A-za-z] -> [A-z]
    [0190-9] -> [0-9]
    [0-93-5] -> [0-9]
    [111]    -> [1]

Add missing setlocale to Src/main.c
Fixup yylex to lex sets properly
This commit adds not-yet-functioning sets, but it's pretty close to finish
Proper sets implementation, FOR_*_SET macro
Begin working on set
Use memory_manager in parser
Next