Creates a new library of low-level utility functions for system calls, file i/o, and module parsing from core/ code called "drlibc".
Merges the drhelper library into drlibc. Creates a new directory core/drlibc/ to group the library files. Renames lib/drhelper.{c,h} as core/drlibc/drlibc.{c,h}. Renames the 3 shared.asm files to drlibc.asm and moves them into core/drlibc/. Renames arch/asm_shared.asm to drlibc_xarch.asm and moves it to core/drlibc.
Separates out the module_* and elf_loader_* functionality of module_{elf,macho}.c that is used by drfrontendlib and drinjectlib into core/drlibc/drlibc_module_{elf,macho.c}.
Separates out the file i/o functions from unix/os.c that are used by drfrontendlib and drinjectlib into core/drlibc/drlibc_unix.c.
Adds weak functions to support using LOG, ASSERT, etc. in drlibc code when linked into non-core binaries via drfrontendlib or drinjectlib while maintaining the core behavior. For Windows, some of these are split into their own drlibc_notdr_* files, as the MSVC linker will discard a duplicate symbol if it's by itself in a single .obj.
Issue: #1409