The Combined allocator hold together all the other components, and
provides a memory allocator interface based on various template
parameters. This will be in turn used by "wrappers" that will provide
the standard C and C++ memory allocation functions, but can be
used as is as well.
This doesn't depart significantly from the current Scudo implementation
except for a few details:
- Quarantine batches are now protected by a header a well;
- an Allocator instance has its own TSD registry, as opposed to a static one for everybody;
- a function to iterate over busy chunks has been added, for Android purposes;
This also adds the associated tests, and a few default configurations
for several platforms, that will likely be further tuned later on.
Why call this file allocator.h? allocator_config.h seems more accurate.