Changed the interpreter directive in util/generate_amalgamation.py from
#!/usr/bin/env python to #!/usr/bin/env python3 to ensure the script
runs with Python 3 explicitly rather than the system default Python.
The amalgamation script now searches for files across src/include, src/vm,
and src/optional directories using a new find_file function, and replaces
full paths with basenames in begin/end comments for reproducible output.
The Makefile also creates the build directory if missing and includes
src/optional/*.h and src/optional/*.c in the amalgamation target.