Compile-time generator for all exchange modules.
Reads the spec manifest and generates one module per exchange
(e.g., CCXT.Bybit, CCXT.Binance) at compile time via Module.create/3.
New exchange = new spec file in priv/specs/json/output/, zero Elixir code.
How it works
The manifest lists all exchange IDs. For each ID, this module calls
CCXT.Exchange.prepare_generate_data/1 to build the AST, then creates
the module directly — same pipeline as use CCXT.Exchange, but without
needing individual stub files.