Add dynamic configuration support

* Library now no longer depends on preprocessor macros to configure.
* No more dependency on CMake's header generator.
* Pool configuration is independent from each other.
* Allow user defined custom allocation functions.