This wraps the process of building or downloading mpy-cross for a specified
version, then running it with specified arguments.
e.g.,
```
$ circuitpython-mpy-cross --circuitpython-version 9.x -- --version
CircuitPython 9.0.0-alpha.2 on 2023-10-27; mpy-cross emitting mpy v6.1
```
Most often I find that I want to check just one kind of artifact
(e.g., mpy files) and this is a quicker syntax than excluding the
other 3 types with 3 --ignores.
Some bundles, such as circuitpython-fonts, don't use submodules to
contain their individual libraries.
Change build_bundle_json so that it works correctly if multiple
libraries come from the same submodule.
With this change, the generated metadata for circuitpython-fonts
contains an entry for every font, not just for one font.
this should fix the message during CI
```
.../setuptools_scm/git.py:163: UserWarning: "/home/runner/work/circuitpython-build-tools/circuitpython-build-tools" is shallow and may cause errors
warnings.warn(f'"{wd.path}" is shallow and may cause errors')
```
This may have been introduced when upgrading action/checkout recently,
or it might be pre-existing.
This is more dependable, and when we know the package name we can
glob inside it to get all files such as bin or ttf files.
This will allow e.g., 5x8.bin & ov5640_autofocus.bin within
bundles.
the behavior of bundlefly and circup when encountering .bin files
needs to be checked.
Tested by building modified pycamera bundle and the autofocus.bin file
appears in the generated zip files:
```
pycamera-py-ec67bde/lib/adafruit_pycamera/ov5640_autofocus.bin 4077 4096
pycamera-8.x-mpy-ec67bde/lib/adafruit_pycamera/ov5640_autofocus.bin 4077 4096
pycamera-9.x-mpy-ec67bde/lib/adafruit_pycamera/ov5640_autofocus.bin 4077 4096
```
There's at least one library in the bundle that has incorrect metadata
and that leads to an error:
https://github.com/adafruit/Adafruit_CircuitPython_Colorsys/pull/29