WIP/NFC: create GC interface for third-party GCs (#55256)
Prelude to the MMTk integration.
Creates an interface header specifying the functions that a third-party
GC must implement to plug into Julia, and also splits the stock Julia GC
implementation into a separate file `gc-stock.c`.
In the future, we'll include a few pre-processor guards to ensure some
of these files are not compiled if MMTk is enabled.
A WIP design document describing the rationale behind the interface and
the plan for MMTk integration should be in this [design
document](https://docs.google.com/document/d/1v0jtSrIpdEDNOxj5S9g1jPqSpuAkNWhr_T8ToFC9RLI/edit)
(feedback is welcome at this stage!).
## TODO
- [x] Ensure functions in `gc-interface.h` are only declared in this
header.
- [x] Add allocation fast-path & codegen write-barriers into the
interface.