compile: Add minimal `bindgen` `allowlist_function()` support
compile: Add minimal `bindgen` `allowlist_function()` support

By default `bindgen` emits bindings for every item in the provided
header, which are typically platform- and architecture-specific defines
from `stdint.h` and `stdbool.h`.  This is noisy and unnecessary as the
function signatures typically don't use any of these.

By allowing the user to set a custom list of function names, bindgen
only emits bindings for said functions and any type(s) they
(recursively) reference.

Unfortunately `bindgen::Builder` cannot be cloned and is moved by every
call, which doesn't allow us to call `.generate()` on it multiple times
(and neatly add the `header()` without updating the underlying struct).
In contrast, `Config::compile()` here borrows `self` and requires the
builder struct to be reusable across possibly multiple calls on the same
`Config`.  For this reason a minimal struct has been added that
currently only supports `allowlist_function()`.

Twinklebear/ispc-rs