The full extension contract: ABI version, extension metadata, and the
list of host functions.
This is the (de)serialized form of the ABI JSON file. Build it with
ExtensionSpec rather than constructing it by hand, or load one from
disk with read_abi. Manifests are validated before any code is
generated: the abi_version must exactly match
the version this crate supports (currently 1), every name must be a
plain ASCII identifier that is not a Rust/Java keyword, function names
must not collide with the reserved __async_* control names, and async
functions must return Type::String.