This adds an AST consumer to the pipelines for 'regular' compilation jobs
which can generate a binary module interface (BMI) when one is required
by the source, rather than making this a separate step.
We only write output if a module interface is required for the source (e.g.
it contains an exported named module).
This initial version has a simplistic approach to determining a default
path and name for the binary module interface.
The patch is preparatory work for other opportunites - for example that
with distinct channels for codegen and BMI output, we can now consider
actions to prune unnecessary content from the BMIs.